调整index.max_result_window后hits.total仍显示10000,如何获取真实总数?
解决Elasticsearch hits.total显示不真实结果数的问题
你已经调高了index.max_result_window,但hits.total仍显示10000,是因为Elasticsearch默认不会精确统计超过10000条的结果数,而是返回"total": {"value": 10000, "relation": "gte"},以此表示结果数大于等于10000。要获取精确的真实结果数,需在查询时添加track_total_hits参数:
具体操作
- 若要精确统计所有结果,在查询体中设置
track_total_hits: true,示例请求:
GET /your_index/_search { "track_total_hits": true, "query": { "match_all": {} }, "from": 10000, "size": 100 }
- 若只需精确统计到某个更大的阈值(比如50000),可设置
track_total_hits: 50000,此时ES会精确统计50000以内的结果数,超过该数值则仍返回gte标识。
注意:精确统计大量结果会消耗更多系统资源,数据量极大时需结合业务需求权衡使用。
内容的提问来源于stack exchange,提问作者EnlightenedMonk
相关产品推荐
相关产品推荐

