Elasticsearch v7:如何按索引统计查询匹配的文档数量?
按索引分组统计匹配文档数量
你原来的查询应该是想执行搜索操作(注意PUT是修改类请求,搜索要使用GET),正确的搜索请求写法是:
GET my_index-*/_search { "query": { "match": { "foo": "bar" } } }
要单独获取每个索引中匹配条件的文档数量,直接用Elasticsearch的聚合功能就能实现,核心思路是按_index字段做分组统计:
GET my_index-*/_search { "size": 0, // 不需要返回具体文档,仅保留聚合结果,提升效率 "query": { "match": { "foo": "bar" } }, "aggs": { "count_by_index": { "terms": { "field": "_index", // 按索引名称分组 "size": 1000 // 如果匹配的索引超过1000个,按需调整这个数值 } } } }
结果说明
返回的聚合结果中,count_by_index.buckets会列出每个匹配索引的名称,以及对应的doc_count字段——这个值就是该索引里符合foo="bar"条件的文档总数。
内容的提问来源于stack exchange,提问作者pic11
相关产品推荐
相关产品推荐

