背景

之前分页查询有接ES,随着系统使用时间数据量不断增加,会有如下报错。关键信息就是 Result window is too large, from + size must be less than or equal to: [10000] but was [100001]

其实就是,查询的数量超过了index.max_result_window的限制值10000,也就是说只能查询前10000条数据。

org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=search_phase_execution_exception, reason=all shards failed]Caused by: org.elasticsearch.client.ResponseException: method [POST], host [http://**.***.**.***:****], URI [/****/****/_search?typed_keys=true&ignore_unavailable=false&expand_wildcards=open&allow_no_indices=true&search_type=query_then_fetch&batched_reduce_size=512], status line [HTTP/1.1 500 Internal Server Error]
{"error":{"root_cause":[{"type":"query_phase_execution_exception","reason":"Result window is too large, from + size must be less than or equal to: [10000] but was [100001]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting."}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":"dms-apply-info","node":"IZhu6TvHSh-jm0rinE0f2A","reason":{"type":"query_phase_execution_exception","reason":"Result window is too large, from + size must be less than or equal to: [10000] but was [100001]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting."}}]},"status":500}

解决

得知这个情况,我是很震惊的,因为对ES还没有全面学习(也可以说一点都没有 bushi)。于是和一位大佬发生了如下对话(自古红蓝出CP??

富贵儿:Result window is too large, from + size must be less than or equal to: [10000] but was [100001]

这个是指总数据量超过10000吗?

大佬:分页只能10000

富贵儿:我看pageSize是10 耶

大佬:pageIndex * pageSize <=10000

富贵儿:那这个也查不了多少数据呀

大佬:是啊,只能查前10000条

富贵儿:认真的?

大佬:我们就这么干的

大佬:

富贵儿:真秀啊

大佬:没人反馈不够用啊

富贵儿:你们没有超过10000的分页需求?

富贵儿:这很魔幻

大佬:超过10000需要用scroll 滚动查询
大佬:不能用 from + size

富贵儿:拼装查询参数这里,要改一下是吧

大佬:emmmm完全不一样的

富贵儿:emmmm因为我不了解哦,先确认下,就是我们这里调用要改。但是ES是支持的,这个意思?

大佬:不支持,只能通过一页一页滚动去看

富贵儿:也就是说,目前使用ES查询,没办法查10000以后的数据,我可以这么理解不?分页查询的话,不支持查超过10000的

大佬:嗯

富贵儿:感谢解答,这个分页查询,好鸡肋的感觉

大佬:合理没必要查10000以后的

富贵儿:为啥,我这边现在就遇到了

大佬:没人会去翻 10000以后啊

富贵儿:刚刚就有人查了,线上报错了,才发现了这个问题

大佬:没事的,做一个提示吧

富贵儿:真的秀

过了半个小时…(我在疯狂百度

富贵儿:看起来好像可以单独设置某个索引的最大数量限制

大佬:这个操作比较吃性能

富贵儿:哦酱造,那不乱搞了

大佬:嗯

富贵儿:给大佬递茶

屈服于大佬,增加了限制,over…

        Integer queryTotal = pageQuery.getPageIndex() * pageQuery.getPageSize();if (queryTotal > 10000) {throw new BusinessException(String.format("只能查询前[%s]条数据, 建议缩小查询范围", 10000));}

参考

解决 Elasticsearch 超过 10000 条无法查询的问题

【ElasticSearch】ES分页查询超过10000限制解决相关推荐

  1. java使用ElasticSearch的scroll查询,高效的解决es查询数量的限制。

    java使用ElasticSearch的scroll查询,高效的解决es查询数量的限制. 一.为什么要使用ES的scroll (1)首先我们要明白es的查询机制:ES的搜索是分2个阶段进行的,即Que ...

  2. ES分页查询时报错“Result window is too large ...”

    ES分页查询时报错"Result window is too large ..." 问题出现缘由 报错详情 错误译文 解决办法 问题出现缘由 ES 中存储了索引数据,使用 ES 可 ...

  3. mysql 分页 去重_『备忘录』elasticsearch 去重分页查询

    一开始数据结构设计的很复杂,又是父子关系又是嵌套关系,结果发现不能通过简单的查询得到想要的结果:比如一个商店只出现一件符合条件的商品,弄得查询语句就变成这样了 curl -XPOST http://l ...

  4. 增大max_result_window是错的,ES只能查询前10000条数据的正确解决方案

    文章目录 1.问题现象描述 2.错误的解决方案 2.1 使用`max_result_window`的错误解决方案 2.2 官方对`max_result_window`参数的解释 2.3 官方推荐的解决 ...

  5. elasticsearch(es)高级查询api

    yml配置 #es配置 spring:elasticsearch:rest:uris: 192.168.16.188:9200 添加依赖 <dependency><groupId&g ...

  6. mysql分页查询报错,及解决

    mysql分页查询报错: 前提: 1.每页1000条数据 2.查到57页的时候,就报错了 以下是错误信息: org.springframework.jdbc.UncategorizedSQLExcep ...

  7. es分页查询重复数据_ES优化 - 巨量数据如何提高查询性能

    问题:如果数据量特别大,如何优化ES的查询性能? 可以从以下几个方面进行思考: File Cache可用的内存: ES的查询严重依赖OS的File Cache,所以说内存分配的内存肯定是越多越好.最理 ...

  8. jpa分组分页查询 返回总数错误解决

    问题描述 jpa分组分页查询之后,返回page分页数据错误解决方案` 例如: Specification<User> specification = new Specification&l ...

  9. elasticsearch java 分页查询_elasticsearch深度分页问题

    正版包邮elasticsearch实战与原理 70.1元 包邮 (需用券) 去购买 > elasticsearch分页对于用过es的人应该都会使用 ,和数据库的分页类似,如下所示,通过from ...

  10. MySQL分页查询慢的方案解决

    背景 我们在开发的过程中使用分页是不可避免的,通常情况下我们的做法是使用limit加偏移量: select * from table where column=xxx order by xxx lim ...

最新文章

  1. 机器学习(一)—— 线性回归
  2. sigprocmask 阻塞进程
  3. 到底什么是空指针?如何避免空指针_01
  4. eclipse指定JDK版本启动,解决version XXX of the JVM is not suitable for this product.Version:XXX 问题
  5. OpenShift 4 - 使用Prometheus监控Node节点
  6. UltraEdit 21 for Mac(超好用的高级文本编辑器)
  7. iOS UICollectionView 注册步骤、使用方法以及 各种问题 和坑点
  8. 海康、大华设备搜索大概实现原理
  9. biopython中文指南_Biopython学习笔记
  10. google code的使用方法
  11. oss上传判断_React实现阿里云OSS上传文件的示例
  12. excel 置信区间 计算_用Excel求置信区间.ppt
  13. 从“机器换人”到“虚拟数字员工”,我们应该担心人工智能“抢饭碗”吗?
  14. eclipse git 上下箭头表示什么
  15. 推荐9个做简历的网站
  16. Win11双屏怎么设置不同壁纸
  17. 从汇编角度看一个C函数调用
  18. Redis的Spring配置
  19. hbw-utils - 基本数据类型的toString()实现
  20. mysql分页查询遇到order by发生的血案

热门文章

  1. HTML相对路径简析
  2. JS - 数字金额转换中文汉字金额
  3. c语言中max的用法
  4. 51单片机系列--蜂鸣器
  5. 新媒体运营数据分析怎么做?
  6. 【电子知识摘要】合金电阻
  7. Linux中Bin文件压缩包解压运行
  8. pearson相关系数_pearson相关系数与典型相关性分析(CCA)
  9. Cisco交换机与路由器登陆密码破解(保存原配置)
  10. BIOS修改mbr为gpt的步骤