1. ES 的索引别名(alias)与零停机重建
ES 的索引别名(alias)如何实现零停机重建索引?
- 索引别名(alias)的概念
- 零停机重建的流程
- 别名切换与原子性
ES 的索引别名(alias)是索引的"逻辑名称",可指向一个或多个索引,应用通过别名访问而非真实索引名。零停机重建流程:原索引 A 加别名 app;创建新索引 B(新的 mapping/分片);并行写入 A 与 B(或从 A 重建数据到 B);重建完成后,用"原子切换"把别名从 A 指向 B(_alias 或 POST /_aliases 的 remove+add 原子操作),删除旧索引 A。因为是原子操作,切换瞬间应用无感知,实现零停机。别名还支持多索引(如按月分片索引统一通过别名查询)、过滤别名(alias filter)等。别名切换的关键是"原子性"与"切换后数据一致性"。零停机重建是 ES 变更 mapping/分词等不可变配置的标准方案。
同名索引的 mapping 不可变是痛点,别名 + 原子切换解决"重建索引不中断服务"。关键在于"并行写入/重建 + 别名原子切换"。理解别名机制,是 ES 索引变更与升级的基础。