如何通过Elasticsearch _search API获取分页结果及总命中数
Elasticsearch _search API总命中数相关问题解答
1、是否可以在_search API的返回结果中获取总命中数?
可以。_search API默认会在返回结果的hits.total字段返回符合查询条件的总命中数:
- 总命中数≤10000时,默认返回精确统计值,和你提到的总命中数5000的场景完全匹配,无需额外配置参数
- 总命中数>10000时,ES默认只会返回
10000,同时hits.total.relation字段值为gte(表示实际命中数大于等于返回值),如果需要获取超过10000的精确总命中数,在查询请求中添加"track_total_hits": true参数即可。
参考请求示例(单批次拉取50条,同时获取精确总命中数):
GET /目标索引名/_search { "track_total_hits": true, "from": 0, "size": 50, "query": { // 此处填写你的查询逻辑 } }
2、分页参数是否会对总命中数的统计结果产生影响?
不会。分页参数from(偏移量)和size(单批次返回条数)仅用来控制当前请求返回的明细数据范围,不会干扰总命中数的统计逻辑,统计的永远是所有符合查询条件的文档总数,和当前返回哪一页的明细数据完全无关。
哪怕你设置size: 0仅查询总命中数不返回任何明细文档,最终统计的总命中数也和返回全量明细时的结果完全一致。
内容的提问来源于stack exchange,提问作者DawnZHANG
相关产品推荐
相关产品推荐

