本文共 1750 字,大约阅读时间需要 5 分钟。
在 Elasticsearch 中查询匹配到的文档总数时,可能会遇到以下问题:
ES 查询 hits 统计总数不准?
当我们使用 ES 查询时,匹配到的文档总数可以通过hits.total.value 获取。然而,ES 默认限制索引查询最多只能返回 10000 条数据。这种限制可能会导致以下问题: track_total_hits 参数会固定为 10000,导致统计数量不准确。track_total_hits 参数。track_total_hits 设为 false 以优化查询效率。track_total_hits 设置为 true,此时返回的 hits.total.relation 会显示精确计数。ES 默认限制索引查询最多只能查询 10000 条数据
result window is too large 错误。PUT /_all/_settings{ "index.max_result_window": 200000}{ "settings": { "index": { "max_result_window": 5000005 } }}在查询具体数据时,可能会遇到以下问题:
在实现分页查询时,需要注意以下几点:
GET test_alias/_search{ "query": { "match_all": {} }, "sort": [ { "add_time": { "order": "desc" } } ], "from": 0, "size": 10}scroll:设置滚动上下文的有效时间(例如 scroll=5m)。size:每次查询返回的数据量。DELETE _search/scroll/DnF1ZX...
DELETE _search/scroll/_all
_uid 或业务唯一 ID)。search_after 查询不支持跳页,必须依赖上一页的最后一条数据。{ "query": { "term": { "id": "minId" } }, "sort": { "id": "asc" }, "limit": "limit"}通过以上方法,可以根据业务需求选择合适的分页方式,同时注意优化硬件资源和查询效率。
转载地址:http://fmefk.baihongyu.com/