首页/数据/NoSQL 速查/索引统计 _stats
Elasticsearch89 条

索引统计 _stats

_stats 汇总索引级别的文档数、存储字节、写入与检索计数、段与合并信息;按 level=shards 能看到分片分布是否均衡。

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

_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

常用分段读法

分段关键字段怎么看
docscount、deleteddeleted 长期偏高说明删除多,段内仍有冗余数据
storesize_in_bytes主副本合计口径,用于容量核算
indexingindex_total、index_failed累计值,速率要由采集端做差分
searchquery_total、fetch_totalquery 是查询次数,fetch 是取回文档次数
segmentscount、memory_in_bytes段数持续增长说明合并落后
mergestotal_time_in_millis合并耗时长会挤占 IO 与 CPU
写入与检索计数都是进程启动以来的累计值,做速率监控必须由采集端求差分;直接对比两个时间点的绝对值会得出错误的趋势结论。
节点重启会让统计计数归零,监控系统如果只做简单差分会在重启当天出现一个巨大的负值或跳变,采集端需要对计数回退做特殊处理。

易错点

  • GET 整个 _stats 的全部分段响应体积很大,监控采集必须显式指定需要的分段,否则采集本身成为集群负担
  • 把累计计数当成区间值直接使用,速率计算错误,容量趋势判断也跟着失真
  • 只看索引级汇总而忽略 level=shards,热点分片问题会被平均值掩盖,写入倾斜长期存在却无人发现
  • 把 _stats 的 store 与 _cat/indices 的 store.size 直接相加:两者都含副本,换算主数据量要按副本数还原

数据来源与参考

  • Elasticsearch Guide: Index stats API
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌