ElasticSearch返回值数量超过10000条解决方案

这篇具有很好参考价值的文章主要介绍了ElasticSearch返回值数量超过10000条解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景:

环境 :
Centos7 + ES 7.9.0 集群


问题描述

Elasticsearch官方默认限制索引查询最多只能查询10000条数据,查询第10001条数据开始就会报错:

Result window is too large, from + size must be less than or equal to

但是很多时候10000数据不能满足项目的需求,所以我们就要解除这个限制。


原因分析:

elasticsearch中max_result_window有上限限制:默认10000。


解决方案:

1、第一种解决方案

restful请求时,解除索引最大查询数的限制

PUT _all/_settings
{
  "index.max_result_window": 200000
}

_all表示所有索引,如果针对单个索引的话修改成索引名称即可!

2、第二种解决方案

在创建索引的时候加上

{
  "settings": {
    "index": {
      "max_result_window": 10000000000
    }
  }
}

但是修改完之后,通过api查询回来的totalhits还是只有10000条?

解决如下 :

在查询时候把 track_total_hits 设置为true

track_total_hits 设置为false禁用跟踪匹配查询的总点击次数

设置为true就会返回真实的命中条数。

java代码在构建条件时候加上:

searchSourceBuilder.trackTotalHits(true);

rest请求查询时:

GET 索引名/_search
{
  "query": {
    "match_all": {}
  },
  "track_total_hits": true
}

备注

  • 以上方案都无需重启集群。

es默认最大返回数是10000,支持的最大返回数是2^31-1,也就是2147483647,不建议设置太大,query数据时size不要太大,总得考虑内存消耗的,设置了返回max后可以用分页获取, from:num_a, size:num_b,获取的就是num_a+1到num_a+num_b的数据。文章来源地址https://www.toymoban.com/news/detail-414900.html

到了这里,关于ElasticSearch返回值数量超过10000条解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Elasticsearch分页搜索数量不能超过10000的解决This limit can be set by changing the [index.max_result_window] index

    开发环境:  JDK1.8、Elasticsearch7.3.1、RestHighLevelClient 问题:  最近在通过Java客户端操作ES进行分页查询(from+size)时,分页获取满足条件的数据和总数。发现满足条件的数据总数一旦超过10000条,使用SearchResponse的getHits().getTotalHits().value返回的结果永远是10000。为什么会被限制只能搜

    2024年02月04日
    浏览(28)
  • Elasticsearch查询10000条限制解决方案

    目录 问题描述 问题原因 解决方案 Elasticsearch官方默认最多只能查询10000条数据,查询20000条数据开始就会报错: max_result_window 是 Elasticsearch 中一个重要的搜索参数,它控制了单个搜索请求返回的最大结果数。具体来说,它定义了从搜索结果中的哪个位置开始返回结果,以及要

    2024年02月04日
    浏览(26)
  • 解决 Elasticsearch 分页查询记录超过10000时异常

    查询结果中 hits.total.value 值最大为10000的限制 解决方法: 1、 请求设置rest_total_hits_as_int=true 注意参数需要放在请求头上 2、修改setting的值  

    2024年02月07日
    浏览(27)
  • es解决只能默认查询10000条数据方案

    在使用es进行数据查询时,由于es官方默认限制了索引一次性最多只能查询10000条数据,这其实是es的一种保护机制,那么很多时候我们需要突破这种限制,例如需要进入数据同步的场景,则需要查询全部的数据,如何处理呢? 方案1:在设置索引属性时解除索引最大查询数的限

    2024年02月11日
    浏览(31)
  • ES查询时只能查询10000条数据解决方案

    方法1: 在restful请求时,解除索引最大查询数的限制 _all表示所有索引,如果针对单个索引的话修改成索引名称即可!!! 此时变可以查询300万条数据了,数据量太大可能存在超时问题,查询数据时加上超时参数。  方法2: 在创建索引的时候加上 方法3:         在查询时

    2024年02月11日
    浏览(34)
  • ElasticSearch 10000条查询数量限制

    我们将库存快照数据导入ES后发现要分页查询10000条以后的记录会报错,这是因为ES通过index.max_result_window这个参数控制能够获取数据总数from+size最大值,默认限制是10000条,因为ES考虑到数据要从其它节点上报到协调节点如果搜索请求的数据越多,会导致ES协调节点占用的堆内

    2024年02月06日
    浏览(29)
  • Elasticsearch 7 以上版本显示hits.total超过10000条设置

    添加rest_total_hits_as_int=true即可   需要在sql里面添加  /*! TRACK_TOTAL_HITS(true) */ 或者用 /*! TRACK_TOTAL_HITS(10001) */ 直接限制记录数量查询即可  请求地址 http://172.21.72.165:9200/_nlpcn/sql 请求头 Content-Type:application/json Authorization:Basic ZWxhc3RpYzoxMjM0NTY= 请求入参 {     \\\"sql\\\": \\\"select /*! TRACK_TO

    2024年02月03日
    浏览(29)
  • Git上传文件不能超过100M 解决方案

    上传项目到Git上,当某个文件大小超过100M时,就会上传失败,因为默认的限制了上传文件大小 不能超过100M 。如果需要上传超过100M的文件,就需要我们自己去修改配置。 首先,打开 终端 ,进入项目所在的文件夹; 输入命令: 此命令的目的是设置最大文件上限改为 500M (5

    2024年02月11日
    浏览(40)
  • untiy avpro播放超过8K视频的解决方案

    安转LAV Filters解码器,然后指定Avpro使用这个解码器播放即可 第一步 安装解码器 下载链接 第二步 AVPro设置 MediaPlayer脚本中一共两处

    2024年04月27日
    浏览(22)
  • php解决time()时间戳超过2038年出错问题的解决方案

    PHP中的time()函数返回当前时间的UNIX时间戳,其范围是从1970年1月1日00:00:00到未来的某一刻。由于32位系统的限制,PHP的time()函数在2038年将达到其最大值,这被称为\\\"2038年问题\\\"。 要解决这个问题,你可以考虑以下几种方法: 使用64位系统:将系统升级到64位可以解决时间戳的限

    2024年02月09日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包