首页/数据/NoSQL 速查/_cat/health 快速看分片计数
Elasticsearch89 条

_cat/health 快速看分片计数

_cat/health 用一行表格给出状态、节点数、主分片与总分片计数,适合写进巡检脚本;加 ts=false 去掉时间戳列便于解析。

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

_cat/health 看什么

_cat/health 用一行表格给出集群状态、节点数量、主分片与总分片数、正在迁移与未分配的分片数量,以及 master 上待处理的任务数。字段少、格式紧凑,非常适合写进巡检脚本与监控采集,是排查集群整体状态的第一站。

基本信息

接口GET /_cat/health?v
常用列status、node.total、node.data、shards、pri、relo、init、unassign、pending_tasks
常用参数ts=false 去掉时间戳、h= 选列、format=json 结构化输出
状态取值green 全部就绪 / yellow 副本未分配 / red 主分片未分配
数据来源与 _cluster/health 同源,输出更紧凑

典型使用场景

  • 定时巡检:把状态与未分配分片数采集进监控系统
  • 发布或扩容后确认集群恢复到预期状态
  • 排查分片迁移是否完成:看 relo 与 init 是否归零
  • 判断 master 是否积压:pending_tasks 持续非零
  • 自动脚本在写入前做一次集群健康预检

常用写法

常用写法
# 去掉时间戳,便于脚本解析
GET /_cat/health?v&ts=false

# 只取巡检关心的列
GET /_cat/health?v&h=status,node.total,shards,pri,unassign,pending_tasks

# 结构化输出,机器可读
GET /_cat/health?format=json

# 需要更细的信息时看未分配分片的原因
GET /_cat/shards?v&h=index,shard,prirep,state,unassigned.reason

# master 积压时看具体任务
GET /_cat/pending_tasks?v

输出逐列读法

列含义正常 / 异常
status集群健康色green 正常,yellow 缺副本,red 缺主分片
node.total / node.data节点总数与数据节点数数据节点数骤降说明节点掉线
shards / pri总分片与主分片计数与预期不符说明索引被增删
relo / init正在迁移与初始化的分片数长期非零说明分配一直在动
unassign未分配分片数非零要立刻用 allocation explain 排查
pending_tasksmaster 待处理任务数持续非零说明 master 处理不过来
该接口与 _cluster/health 同源但输出更紧凑;写脚本采集时优先使用 format=json,避免解析带对齐空格与时间戳的表格。
巡检脚本除了采集 status,还应记录 unassign 与 relo 的变化趋势:状态色只在主分片缺失时变红,副本长期未分配则一直表现为黄色的「健康」假象。

易错点

  • 默认输出带时间戳与对齐空格,脚本解析必须加 ts=false 并优先使用 format=json
  • 把 yellow 直接当成故障:只有副本的索引本身就是黄色,判断标准应看未分配副本是否属于预期情况
  • pending_tasks 持续非零通常意味着 master 任务积压,只看状态色无法定位,需要结合 pending_tasks 接口看具体任务
  • 巡检脚本只判断 status 而忽略 unassign,副本长期未分配意味着集群事实上没有冗余,节点故障时无法切换

数据来源与参考

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