OpenSearch索引滚动配置报错:缺失rollover_alias索引设置
问题
我正尝试在OpenSearch中配置基于简单min_doc_count条件的索引滚动,但遇到错误:
"message": "Missing rollover_alias index setting [index=app_logs-000002]"
已创建名为app_logs的滚动别名,并为索引附加了以下测试策略(文档数达3条时触发滚动):
PUT _plugins/_ism/policies/rollover_policy { "policy": { "description": "Rollover policy", "default_state": "rollover", "states": [ { "name": "rollover", "actions": [ { "rollover": { "min_doc_count": 3 } } ], "transitions": [] } ], "ism_template": [ { "index_patterns": [ "app_logs-*" ] } ] } }
执行GET _cat/aliases结果:
app_logs app_logs-000001 - - - false app_logs app_logs-000002 - - - true
执行GET _cat/indices结果:
yellow open app_logs-000002 V4j0gxaYTcqoQZvtd0u2zc 1 1 6 0 4.1kb 4.1kb yellow open app_logs-000001 AnPjlOq6Q5We411z2q_YpQ 1 1 5 0 18.8kb 18.8kb ...
执行GET _opendistro/_ism/explain/app_logs-000002?pretty显示滚动操作失败,提示缺失rollover_alias设置;执行GET app_logs-000002/_settings确认该设置确实缺失,但预期它会自动添加。
执行GET _template可见模板ism_rollover中已配置rollover_alias为app_logs,匹配app_logs-*索引模式,但新索引未应用该设置,请问原因是什么?
原因及解决方法
核心原因
- 模板优先级被覆盖:
ism_rollover模板的order值可能低于其他匹配app_logs-*的索引模板,导致新索引优先应用高优先级模板的设置,忽略了rollover_alias配置。 - 索引创建方式不符合预期:如果
app_logs-000002是手动创建而非通过IS策略自动滚动生成,IS模板不会为已存在的索引自动补全缺失的设置。 - 模板匹配规则存在冲突:需确认
ism_rollover模板的index_patterns是否精确匹配app_logs-*,或者是否存在其他模板的匹配范围更精确,抢占了应用权。
解决步骤
- 调整模板优先级:执行
GET _template/ism_rollover查看模板的order值,将其设置为高于其他同模式模板的数值,确保优先应用:
PUT _template/ism_rollover { "index_patterns": ["app_logs-*"], "order": 100, "settings": { "index": { "rollover_alias": "app_logs" } } }
- 为现有索引补全设置:针对已存在的
app_logs-000002手动添加rollover_alias配置:
PUT app_logs-000002/_settings { "index.rollover_alias": "app_logs" }
- 规范索引创建流程:后续新索引需通过写入滚动别名
app_logs的方式,让IS策略自动管理索引生命周期,避免手动创建索引导致的配置缺失。 - 验证模板生效情况:创建测试索引
app_logs-000003后,执行GET app_logs-000003/_settings确认rollover_alias是否已自动配置。
内容的提问来源于stack exchange,提问作者Michal Drozd
相关产品推荐
相关产品推荐

