标准答案
- 创建带版本的新索引,先做 Mapping、分片和分析器校验,再从权威数据全量构建。
- 全量构建期间记录增量变更或从可追溯事件回放,避免新索引落后于数据库。
- 校验文档数量、抽样字段、查询结果和权限过滤后,再原子切换别名;旧索引保留一段观察期。
- 切换失败时回滚别名,并处理切换前后重复事件、删除事件和清理任务。
题目解析
安全重建要先创建版本化的新索引,按权威数据全量构建,再把构建期间的新增、更新和删除追平。索引健康只说明结构可用,不说明内容已经与数据库一致。
切换前要校验文档数量、抽样字段、关键查询、权限过滤和延迟,使用别名或等价机制原子切换。切换期间的重复事件和删除事件必须有明确处理顺序。
旧索引应保留观察窗口并具备回滚能力,确认新索引稳定、数据校对完成和写入链路正常后再清理。重建任务本身也要限速,避免压垮主库和集群。
常见误区
- 误区:直接删除线上索引再重建。改正:创建新索引并通过别名切换,保留旧版本作为回滚。
- 误区:重建期间忽略数据库新增和删除。改正:记录增量事件或在切换前追平变更,并验证版本顺序。
- 误区:切换后立即删除旧索引。改正:保留观察期,完成查询、权限、数据和写入校验后再清理。