You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch索引手动删除与ILM策略失效排查咨询

ILM未生效的原因及解决方案

一、ILM未生效的核心原因

  1. 索引绑定的ILM策略不匹配
    目标索引配置中index.lifecycle.name的值为logs,但你创建的ILM策略是ECK-ILM,二者不匹配,导致索引不会应用你配置的策略。

  2. 索引被标记为"索引完成"
    索引设置里的index.lifecycle.indexing_complete: true会告知Elasticsearch该索引已停止写入,ILM会直接终止对该索引的所有生命周期动作,包括你配置的rollover操作。

  3. 数据流的策略关联逻辑问题
    目标索引是数据流的分片索引(.ds-前缀),这类索引的ILM策略通常通过对应的数据流索引模板关联,而非直接绑定到单个分片索引。若模板未关联正确策略,后续生成的分片索引都会沿用错误配置。

二、ILM策略修复方案

1. 修正现有索引的策略关联

若要让当前.ds-索引应用ECK-ILM策略,执行以下命令更新索引设置,同时取消"索引完成"标记:

PUT /.ds-logs-elastic_agent-default-2025.01.06-000004/_settings
{
  "index.lifecycle.name": "ECK-ILM",
  "index.lifecycle.indexing_complete": false
}

2. 配置索引模板确保后续索引生效

为让数据流后续生成的所有分片索引自动关联ECK-ILM策略,修改对应索引模板:

PUT _index_template/logs-elastic-agent-default
{
  "index_patterns": ["logs-elastic_agent-default"],
  "data_stream": {},
  "template": {
    "settings": {
      "index.lifecycle.name": "ECK-ILM"
    }
  }
}

3. 完善ILM策略(可选)

你当前的ECK-ILM仅包含hot阶段的rollover操作,无自动删除逻辑。若希望旧索引自动清理,可扩展策略添加delete阶段:

PUT _ilm/policy/ECK-ILM
{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "set_priority": {
            "priority": 100
          },
          "rollover": {
            "max_primary_shard_size": "5gb"
          }
        }
      },
      "delete": {
        "min_age": "30d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

该配置会让索引在rollover后等待30天自动删除。

三、手动管理索引的方法

1. 直接删除整个索引

若确认索引完全不再需要,执行直接删除命令(效率最高):

DELETE /.ds-logs-elastic_agent-default-2025.01.06-000004

2. 清空索引数据(保留索引结构)

若需保留索引结构但删除所有数据,使用_delete_by_query:

POST /.ds-logs-elastic_agent-default-2025.01.06-000004/_delete_by_query?conflicts=approved
{
  "query": {
    "match_all": {}
  }
}

注意:该操作会遍历删除所有文档,速度慢于直接删除索引,仅适用于需保留索引配置的场景。

内容的提问来源于stack exchange,提问作者sejun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 06:04:56