_stats 提供什么
_stats 汇总单个索引或整个集群的运行统计:文档数与删除数、存储字节、写入与检索计数、段与合并信息。默认按索引聚合,加上 level=shards 就能看到每个分片各自的数值,用来判断分片之间是否均衡,是排查写入热点最直接的数据来源。
基本信息
| 接口 | GET /<index>/_stats 或 GET /<index>/_stats/<metric> |
|---|---|
| 常用分段 | docs、store、indexing、search、segments、merges、refresh |
| level 参数 | cluster / indices(默认)/ shards |
| 常用组合 | /<index>/_stats/docs,store/indexing?level=indices |
| 权限 | 索引监控类权限,只读操作 |
典型使用场景
- 监控写入速率与检索量,作为容量与性能趋势的基础数据
- 判断分片是否均衡:level=shards 对比各分片的文档数与体积
- 观察段数与合并情况,判断 merge 是否跟得上写入节奏
- 核对主副本文档数差异,确认副本同步是否完成
- 排查写入被拒的情况,看 indexing 计数与失败数变化
常用取数
常用取数
# 只看文档数与存储,按分片展开
GET /my-index/_stats/docs,store?level=shards
# 检索统计:查询总数、耗时、当前正在执行的查询数
GET /my-index/_stats/search?level=indices
# 段与合并:段数持续增长说明合并没有跟上写入
GET /my-index/_stats/segments,merges
# 更紧凑的视图,适合巡检
GET /_cat/indices/my-index?v&h=index,health,pri,rep,docs.count,store.size
# 写入计数与失败计数
GET /my-index/_stats/indexing?level=indices常用分段读法
| 分段 | 关键字段 | 怎么看 |
|---|---|---|
| docs | count、deleted | deleted 长期偏高说明删除多,段内仍有冗余数据 |
| store | size_in_bytes | 主副本合计口径,用于容量核算 |
| indexing | index_total、index_failed | 累计值,速率要由采集端做差分 |
| search | query_total、fetch_total | query 是查询次数,fetch 是取回文档次数 |
| segments | count、memory_in_bytes | 段数持续增长说明合并落后 |
| merges | total_time_in_millis | 合并耗时长会挤占 IO 与 CPU |
写入与检索计数都是进程启动以来的累计值,做速率监控必须由采集端求差分;直接对比两个时间点的绝对值会得出错误的趋势结论。
节点重启会让统计计数归零,监控系统如果只做简单差分会在重启当天出现一个巨大的负值或跳变,采集端需要对计数回退做特殊处理。