Elasticsearch7.10.2调用Index Stats API如何返回指定统计字段
参数理解偏差说明
你对fields参数的用法理解有误:
fields参数的作用是指定要统计的索引内业务字段(比如索引中存储的订单号、用户ID这类业务属性字段),仅对completion、fielddata这类和具体业务字段绑定的统计项生效,不能用来过滤docs这类索引级通用统计指标的返回字段。_stats/docs接口本身不识别fields参数,这也是你请求抛出400非法参数异常的直接原因。
仅获取指定统计字段的实现方式
ES 7.10.2版本的Index Stats API没有提供专门用来裁剪统计指标返回字段的参数,可通过以下两种方式实现需求:
- 使用ES通用响应过滤参数
filter_path在服务端完成返回字段裁剪,该参数支持按JSON路径指定需要返回的内容,示例请求:
curl -XGET "http://localhost:9200/order/_stats/docs?filter_path=indices.*.docs.count"
对应返回结果仅包含需要的count字段:
{ "indices" : { "order" : { "docs" : { "count" : 7 } } } }
- 如果请求侧不方便加参数,也可以在拿到接口全量返回结果后,在业务代码层自行提取需要的
count字段,丢弃不需要的deleted等冗余字段。
内容的提问来源于stack exchange,提问作者Nishikant Tayade
相关产品推荐
相关产品推荐

