首页/数据/NoSQL 速查/ILM explain 查看索引所处阶段
Elasticsearch89 条

ILM explain 查看索引所处阶段

ILM explain 显示每个索引当前所在 phase、action、step 与可能的错误,用来回答"为什么这个索引没有按期滚动或删除"。

NoSQL 速查数据更新于 2026-10-13

ILM explain 是什么

ILM explain 显示每个索引当前所在的阶段、正在执行的动作与步骤,以及可能出现的错误,用来回答「为什么这个索引没有按期滚动或删除」。关键字段有 policy、age、phase、action、step、failed_step 与 step_info。常用参数 only_errors=true 只看异常索引,only_managed=true 只看受策略管理的索引;配合集群级的 _ilm/status 还能确认 ILM 服务自身是否在运行。

基本信息

接口GET /<index>/_ilm/explain
关键字段policy、age、phase、action、step、failed_step、step_info
常用参数only_errors=true、only_managed=true
手动重试POST /<index>/_ilm/retry
服务状态GET /_ilm/status
所属系统Elasticsearch(ILM 功能)

典型使用场景

  • 滚动卡住排查:索引没有按预期生成新索引时看失败步骤
  • 保留期核对:确认索引是否已经进入 delete 阶段
  • 批量巡检:only_errors=true 一次拉出所有异常索引
  • 定位配置问题:名称模式不匹配、缺少写别名等原因都写在 step_info 里
  • 变更验证:改完策略后确认索引重新走完各阶段

查看与重试

查看与重试
GET /logs-*/_ilm/explain?only_errors=true     # 只列出异常的索引

GET /logs-2024.07.01/_ilm/explain             # 单个索引的完整阶段信息

GET /_ilm/status                              # ILM 服务本身是否在运行

POST /logs-2024.07.01/_ilm/retry              # 修复原因后手动重试当前步骤

输出字段读法

字段含义读法
phase当前阶段hot/warm/cold/delete,与预期不符说明流转有问题
action当前动作例如 rollover、shrink、delete
step动作内的步骤卡住时用来定位到具体步骤
age索引年龄与策略里的阈值对比
failed_step失败的步骤结合 step_info 看原因
step_info详细信息报错原因多数写在这里
滚动卡住的常见原因是索引名不匹配模板、缺少写别名,或分片数不符合 shrink 条件,这些都会在 step_info 里给出具体说明。
错误修复后 ILM 不一定自动重试当前步骤,必要时用 _ilm/retry 手动重试,否则索引会一直停在原地不再推进。
查看前先确认 _ilm/status 返回正常运行:ILM 服务被停掉时所有索引都会显示停滞,把服务停机当成索引卡住会白白走一圈弯路。
策略里的 min_age 以索引创建时间为锚点计算,改策略不会让已过期的索引立刻跳到下一步,仍要等 ILM 的下一次评估周期。

易错点

  • 错误修复后 ILM 不一定自动重试当前 step,必要时用 POST /<index>/_ilm/retry 手动重试
  • 只看阶段不看 step_info 的具体原因就改配置,改错方向会让问题更难恢复
  • 忽略集群级 _ilm/status,把服务停止误判成索引卡住
  • 把 explain 里的 age 当精确值使用,它随集群状态刷新周期更新,存在延迟

数据来源与参考

  • Elasticsearch Guide: Explain lifecycle API
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌