Elasticsearch如何让.enrich索引随源索引自动更新、避免重复创建
ES 7.11 Enrich 流程自动触发与索引优化配置方案
自动触发Enrich策略的实现路径
- 可完全基于集群原生能力实现无人工干预的enrich触发,无需依赖外部轮询脚本:
- 基于源索引变更阈值触发:给源索引配置文档变更量统计规则,当单周期内源索引的新增、修改、删除文档数达到预设阈值时,自动调用对应enrich策略的执行接口,替代手动执行
PUT /_enrich/policy/my-policy/_execute的重复操作。 - 固定周期调度触发:对于源索引变更频率稳定的场景,可通过集群内置定时任务能力,按照固定时间间隔(如每15分钟、每小时)自动发起enrich策略执行,全程无人工介入。
- 基于源索引变更阈值触发:给源索引配置文档变更量统计规则,当单周期内源索引的新增、修改、删除文档数达到预设阈值时,自动调用对应enrich策略的执行接口,替代手动执行
避免冗余Enrich索引堆积的配置方法
默认设计说明:ES 7.11的enrich执行逻辑采用「新索引预构建+别名原子切换」的机制,执行时生成新的.enrich物理索引是为了保证enrich查询过程无阻塞、无数据不一致,属于可靠性设计的一部分,可通过配置把无效的索引生成动作降到最低。
- 执行前置校验:配置enrich策略触发前先比对源索引的内容特征值,如果确认源索引和上次enrich执行时的内容没有差异,直接跳过本次执行流程,从根源上避免无实际变更时生成新的冗余索引。
- 切换后自动清理:当新的enrich索引构建完成、enrich别名自动切换到新索引后,自动删除旧版本的冗余.enrich物理索引,仅保留当前正在被enrich处理器引用的最新版本索引,避免磁盘空间的无效占用。
- 硬编码索引保留规则:为单个enrich策略配置对应的索引保留上限,最多仅保留2个物理索引(当前生效版本+构建中的待切换版本),超出保留数量的旧索引自动清理,不会出现每次执行就无限累积新索引的问题。
内容的提问来源于stack exchange,提问作者Grigory
相关产品推荐
相关产品推荐

