如何在无ILM功能的ElasticSearch Kibana中删除旧索引?
关于ILM实现旧索引删除的解决方案及参考内容
一、先确认ILM功能是否启用
- 检查Elasticsearch集群的
xpack.index_lifecycle_management.enabled设置状态,执行以下命令验证:GET _cluster/settings?include_defaults=true&filter_path=**.index_lifecycle_management.enabled - 若返回值为
false,需在elasticsearch.yml中开启该配置后重启集群:xpack.index_lifecycle_management.enabled: true
二、Kibana无ILM入口的排查点
- 确认Kibana配置文件
kibana.yml中xpack.indexLifecycleManagement.enabled设置为true,未开启则修改后重启Kibana。 - 检查当前登录用户权限,需分配
manage_index_lifecycle权限(superuser角色默认包含该权限),否则无法看到ILM功能入口。
三、手动编写ILM策略的步骤
1. 创建ILM策略
通过Elasticsearch API创建自动删除旧索引的策略,以下是删除30天以上索引的示例:
PUT _ilm/policy/delete_old_indices_policy { "policy": { "phases": { "delete": { "min_age": "30d", "actions": { "delete": {} } } } } }
- 说明:如果需要先执行rollover(索引滚动)再删除,可添加
hot阶段配置;上述示例直接设置索引存活满30天后触发删除。
2. 关联索引与策略
- 给现有索引绑定策略:
PUT /_all/_settings { "index": { "lifecycle": { "name": "delete_old_indices_policy" } } } - 创建索引模板,让新索引自动应用策略:
PUT _index_template/old_indices_template { "index_patterns": ["logs-*"], // 替换为你需要匹配的索引前缀,比如"metrics-*" "template": { "settings": { "index.lifecycle.name": "delete_old_indices_policy" } } }
四、验证策略执行状态
- 查看策略详情:
GET _ilm/policy/delete_old_indices_policy - 查看索引的ILM执行情况:
GET /_all/_ilm/explain
内容的提问来源于stack exchange,提问作者sneedster
相关产品推荐
相关产品推荐

