Elasticsearch别名未自动关联rollover策略生成的新索引问题
问题根因
你第一次执行POST _aliases用通配符my-index-*绑定my-alias时,Elasticsearch只会将命令执行时刻已经存在的、匹配通配符规则的索引加入别名,通配符规则不会被持久化存储,后续新生成的匹配索引不会自动关联到该别名,这是Elasticsearch别名的默认行为。
你后续创建my-alias-2时能同时关联两个索引,是因为执行命令时my-index-2021.11.30-000002已经生成,符合通配符匹配规则,所以被一起加入了别名。
解决方案
你的思路是对的,只需要修改匹配my-index-*的索引模板,新增读别名的自动绑定配置即可,新索引创建时会自动套用模板配置,无需手动操作。
修改后的索引模板参考如下:
{ "index_patterns": ["my-index-*"], "template": { "settings": { "index": { "lifecycle": { "rollover_alias": "my-write-alias" } } }, "aliases": { "my-alias": { "is_write_index": false } } }, "priority": 100 }
注意事项:
- 模板的
priority优先级需要设置为高于其他同样匹配my-index-*的模板,避免别名配置被覆盖 - 已存在的旧索引不受模板更新影响,你之前已经手动绑定的别名无需重复操作
- 后续所有通过rollover自动生成的新
my-index-*索引,创建时会自动绑定my-alias读别名
内容的提问来源于stack exchange,提问作者Fabry
相关产品推荐
相关产品推荐

