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

这篇具有很好参考价值的文章主要介绍了【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
或者代码中动态修改参数,如下

  //更新索引的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,在不影响性能下同时也满足我们的需要。文章来源地址https://www.toymoban.com/news/detail-726028.html

到了这里,关于【ES】--track_total_hits参数影响ES分页数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mybatis-plus分页total为0,分页失效,mybatis-plus多租户插件使用

    背景:项目使用mybatis分页插件不生效,以及多租户使用时读取配置异常 多租户插件使用遇到的问题: 最开始在MyTenantLineHandler中使用 @Value(\\\"${tables}\\\"),服务启动时能从配置中心拉取到配置,但在运行时获取到的值为空,试了很多方法都不生效,后面将配置中心的配置在调用My

    2024年02月06日
    浏览(51)
  • Elasticsearch ES操作:查询数据(全部、分页、单条)

    查询 条件查询 指定条数 返回结果

    2024年02月16日
    浏览(36)
  • MySQL 数据传输参数设置对数据一致性的影响

    作者通过全面系统的测试,揭秘 lower_case_table_names 设置对数据一致性的影响。 作者:刘安 爱可生测试团队成员,主要负责 DTLE 开源项目相关测试任务,擅长 Python 自动化测试开发。 本文来源:原创投稿 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编

    2024年02月12日
    浏览(53)
  • 补充:es与mysql之间的数据同步 2 使用分页导入的方式把大量数据从mysql导入es

    本片文章只是对之前写的文章的补充, es与mysql之间的数据同步 http://t.csdn.cn/npHt4 补充一: 之前的文章对于交换机、队列、绑定,使用的是@bean, 而这里使用的是纯注解版 在消费方,声明交换机: 补充二: 之前的文章是直接使用es操作数据,新增和修改,这样做不是很合适

    2024年02月12日
    浏览(51)
  • 谷歌训了28个15亿参数模型,说明数据对大模型训练的影响

    夕小瑶科技说 原创 作者 | Python 随着ChatGPT的爆火,大规模语言模型(Large Language Model,LLM)如日中天。然而,由于相关数据细节并不公开,相关研究大多都是盲人摸象式探索,缺乏系统的经验指导。 本文针对LLM的语言模型预训练步骤给出了系统的经验性探索,训练了28个1.5

    2024年02月07日
    浏览(41)
  • Elasticsearch:创建自定义 ES Rally tracks 的分步指南

    作者:Alejandro Sánchez 按照这个综合教程学习如何制作个性化的 Rally tracks ES Rally 是一个用于在 Elasticsearch® 上测试性能的工具,允许你运行和记录比较测试。 做出决策可能很困难,尤其是当你没有所需的信息并且只能根据过去积极或消极的变化进行猜测或经验时。 如果我们补

    2024年02月21日
    浏览(97)
  • 微信小程序demo 调用支付jsapi缺少参数 total_fee,支付签名验证失败 究极解决方案

    其中package: ‘prepay_id=’ + data.prepayId,这一行代码,必须拼接‘prepay_id=’ 文档官方文档: https://pay.weixin.qq.com/docs/merchant/apis/jsapi-payment/jsapi-transfer-payment.html 注意看,后台生成sign时候,拼接的字符串中,也需要加上\\\"prepay_id=\\\" app支付和小程序支付的代码之前还有这种差别和坑…

    2024年02月04日
    浏览(50)
  • 使用分页导入的方式把大量数据从mysql导入单点的es时报错:Connection refused: no further information

    我出现的问题: 意思是, 拒绝连接:没有进一步的信息 我的解决方案是:在yml文件中配置以下信息,问题就可以解决 但是,我水品有限,没有明白什么原因,还有这个配置文件中的内容也不是很清楚,如果有路过的大佬,原因耽误宝贵的时间,给小弟解释一下,小弟不胜感

    2024年02月11日
    浏览(67)
  • 【ES实战】ES分页与去重

    介绍ES分页和ES去重的实现方式。 from + size 每次对结果集都是全面分页,数量少时可以用,10000条以内( index.max_result_window 的默认值)。对很占内存。10个一条 深度就是1000。控制分页的深度意在控制协调节点上的队列长度。 问题说明 一个有 5 个主分片的索引中搜索。 当我们请

    2023年04月25日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包