【ES】--track_total_hits参数影响ES分页数据

目录

一、前言

工作遇到一个ES深度分页查询时出现报错,报错内容如下

ElasticsearchException[Elasticsearch exception [type=illegal_argument_exception, reason=Result window is too large, from + size must be less than or equal to: [10000] but was [10001].This limit can be set by changing the [index.max_result_window] index level setting.
出现这个问题的原因 是:

ES为了避免用户的过大分页请求造成ES服务所在机器内存溢出,默认对深度分页的条数进行了限制,默认的最大条数是10000条

二、解决方法

2.1、修改max_result_window参数

修改es的默认窗口大小 --- index.max_result_window

或者代码中动态修改参数,如下

java 复制代码
  //更新索引的max_result_window参数
    private boolean updateIndexs(TransportClient client, String indices, int records, int size) {
        int records = from * size + size;
        if (records <= 10000) return true;
        UpdateSettingsResponse indexResponse = client.admin().indices()
                .prepareUpdateSettings(indices)
                .setSettings(Settings.builder()
                        .put("index.max_result_window", records)
                        .build()
                ).get();
        return indexResponse.isAcknowledged();
    }

2.2、修改track_total_hits 参数

出现上面的问题,实际是ES查询时的totalHits返回值>10000。为什么会出现这种情况呢 ?Elasticsearch 的 track_total_hits 参数是指追踪查询结果的总命中数。默认情况下,当查询结果总命中数大于 10,000 时,Elasticsearch 将停止精确地计算命中数,以避免对集群造成过大的压力。

track_total_hits 为 true,则 Elasticsearch 将返回精确的命中数,这些命中数会大于10000,但可能会对性能产生影响。

track_total_hits 为 false,则 Elasticsearch 可能会返回近似的命中数,并且不会超过10000,但可以提高查询性能。

2.3、结论

最佳的解决方案是track_total_hits 为false,在不影响性能下同时也满足我们的需要。

相关推荐
Waitfor_Me16 小时前
Elasticsearch介绍及使用
大数据·elasticsearch·搜索引擎
C1829818257517 小时前
数据通过canal 同步es,存在延迟问题,解决方案
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客18 小时前
Elasticsearch:在 HNSW 中提前终止以实现更快的近似 KNN 搜索
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
kong790692818 小时前
电商项目-基于ElasticSearch实现商品搜索功能(三)
elasticsearch·电商项目·商品搜索
小李不想输啦18 小时前
elasticsearch中IK分词器
大数据·elasticsearch·搜索引擎
ThisIsClark18 小时前
【后端面试总结】ES和MySQL对比技术探讨
mysql·elasticsearch·面试
Elastic 中国社区官方博客18 小时前
Elasticsearch:向量数据库基础设施类别的兴衰
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
不能放弃治疗19 小时前
第33 章 - ES 实战篇 - MySQL 与 Elasticsearch 的一致性问题
elasticsearch
C1829818257519 小时前
es分页查询
大数据·数据库·elasticsearch
zfj3211 天前
学英语学Elasticsearch:04 Elastic integrations 工具箱实现对第三方数据源的采集、存储、可视化,开箱即用
大数据·elasticsearch·搜索引擎·logstash·elastic agent·与第三方集成