首页/数据/NoSQL 速查/_cat/indices 查看索引列表与健康状态
Elasticsearch89 条

_cat/indices 查看索引列表与健康状态

_cat/indices 用表格列出集群内索引:健康色、主分片与副本数、文档数、存储占用;支持选择列、排序与通配符过滤,适合巡检与容量核对。

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

_cat/indices 是什么

_cat/indices 用表格列出集群内的索引:健康色、主分片与副本数、文档数、删除文档数与存储占用。它支持选择列、排序与通配符过滤,是日常巡检与容量核对最快的入口。_cat 系列默认返回纯文本表格,追加 format=json 可得到结构化结果,便于脚本解析入库。

基本信息

接口GET /_cat/indices 或 /_cat/indices/<模式>
常用参数v 显示表头、h= 选择列、s= 排序、expand_wildcards
格式参数format=json 返回结构化结果
健康色green 全部正常、yellow 副本未分配、red 主分片缺失
常用列index、health、pri、rep、docs.count、store.size
适用版本Elasticsearch 7.x / 8.x

典型使用场景

  • 快速盘点集群有哪些索引,确认命名是否符合规范
  • 按存储占用降序找出体积最大的索引,评估是否需要 ILM
  • 核对文档数与存储量,判断是否需要加节点或扩磁盘
  • 定位健康色不为绿的索引,缩小排查范围
  • 确认某个索引的主分片与副本数是否符合预期
  • 定期导出表格做容量趋势记录

示例

示例
GET /_cat/indices?v                                                    # 全部索引
GET /_cat/indices?v&s=store.size:desc                                  # 按存储降序
GET /_cat/indices/logs-*?v&h=index,health,pri,rep,docs.count,store.size  # 只看日志索引
GET /_cat/indices?v&h=index,health&format=json                         # JSON 便于解析
GET /_cat/indices?v&health=red                                         # 只列不健康的
GET /_cat/indices?v&s=docs.count:desc&h=index,docs.count               # 按文档数排序

输出逐列读法

列名含义正常/异常
index索引名称命名应体现业务与日期
health健康色非 green 需进一步排查
pri / rep主分片数与每主分片副本数rep 为 0 表示无冗余
docs.count文档总数与业务写入量对齐
docs.deleted已删除但未清理的文档数长期偏大说明段未合并
store.size主分片加副本总占用容量告警的主要指标
pri.store.size主分片占用估算原始数据量用它

容量巡检要点

  • 先看 store.size 排名,再结合写入量判断是否需要滚动索引
  • pri.store.size 才能反映真实数据规模,store.size 含副本会翻倍
  • docs.deleted 长期偏高说明段合并不足,可考虑 force merge
  • health 为 yellow 时确认是副本未分配而不是节点掉线
  • 索引数量过多会推高集群状态体积,建议按时间滚动并清理旧索引
  • 把巡检结果定期落库,便于观察容量增长趋势
追加 ?format=json 返回结构化结果便于脚本解析;不指定时是纯文本表格,列宽会随内容变化,按固定位置截取容易出错。
h= 与 s= 的列名必须写完整列名,例如排序要写 s=store.size:desc,写成 s=size 不会生效。
yellow 不一定是故障:单节点集群副本无处分配,把 number_of_replicas 调为 0 即可转绿;但调之前必须确认没有节点意外掉线。
列表过长时用通配符或 _cat/indices/logs-* 限定范围,配合 expand_wildcards=open 只列出已打开索引。

与其他巡检接口的分工

  • 先看集群健康色确认整体状态,再下钻到索引粒度
  • _cat/indices 看每个索引的体积与文档数,定位容量热点
  • _cat/shards 看分片落在哪些节点,排查分布倾斜
  • _cat/nodes 看节点堆内存与磁盘水位,确认资源瓶颈
  • _cat/allocation 看每个节点的分片数与占用,评估均衡性
  • GET _cluster/allocation/explain 给出未分配分片的直接原因
巡检顺序建议固定为:集群健康 → 索引列表 → 分片分布 → 节点资源 → 未分配原因,这样每次都能覆盖容量与健康两条主线。

常见异常与处置

  • health 为 red:先看 _cat/shards 里哪些主分片未分配,再做分配诊断
  • health 为 yellow:确认是副本未分配还是节点掉线,单节点集群属预期
  • docs.deleted 长期偏高:说明段未合并,评估 force merge 的时间与 IO 代价
  • store.size 突然翻倍:多半是副本数被调大或新增字段占用了索引空间
  • 索引数量暴涨:检查按日期滚动的索引是否缺少清理或 ILM 策略
  • pri.store.size 与写入量不匹配:可能数据重复写入或同一份数据建了多个索引

易错点

  • 排序字段必须写完整列名,s=size 不生效,应写 s=store.size:desc
  • yellow 不一定是故障:单节点集群副本无处分配,先确认没有节点掉线再调副本数
  • store.size 包含副本占用,直接拿它估算原始数据量会高估一倍,看 pri.store.size
  • 把 _cat 表格按固定列位置解析脚本,版本升级后列顺序或宽度变化会导致解析错乱,改用 format=json
  • 只清理索引不看别名指向,会导致查询别名落到已删除的索引上,删除前先 GET _alias 核对

数据来源与参考

  • Elasticsearch Guide: cat indices API
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌