工作纪实38-ES分页数据问题

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

当索引非常非常大(千万或亿),是无法按照from + size做深分页的,因为分页越深则越容易OOM,即便不OOM,也是很消耗CPU和内存资源的。官方在后2.x版本中已增加限定 index.max_result_window:10000作为保护措施,即默认 from + size 不能超过1万。(from表示从第几行开始,size表示查询多少条数据,from默认为0,size默认为10)

解决方案:

方案一、接口层面限制查询到10000条,业务端给提示让使用方继续筛选数据

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

方案二、使用其他的深分页策略:scroll 或者scroll after【缺点是不能随意上下翻页,根据场景选择】

方案三:创建索引时设置【不推荐】

yaml 复制代码
"settings":{
	"index":{
		"max_result_window":1000000
   } 
}
相关推荐
niucloud-admin1 分钟前
JAVA V6 多商户商城 开发文档——job 计划任务开发
java·python·github
海宇AI1 小时前
零信任架构实战:基于海宇柠檬查出险-登记证构建自动化车抵贷核保网关
java·人工智能·架构·自动化
风哥2号2 小时前
数据库教程FGMT43‑MySQL性能分析与优化调整
数据库·mysql
随身数智备忘录2 小时前
财务数据分析如何与业务场景结合?财务数据分析如何从数出有据到数出有用?
数据库
cfm_29143 小时前
单例模式详解
java
我叫张土豆3 小时前
本体论、DDD、SDD、TDD:AI 编程时代的四层认知栈
java·人工智能
白远山3 小时前
家政服务家政社区派单实战:调度系统架构设计与实现指南
java·开发语言·小程序·架构·需求分析
海南java第二人3 小时前
从诞生到回收:JVM对象生命周期与垃圾回收全链路解析
java
这个DBA有点耶3 小时前
数据库教程:从零基础到实战的完整学习路径(2026版)
数据库·程序员·代码规范
SL_staff3 小时前
JVS-Logic:从页面配置工具到企业级业务逻辑中枢的技术演进
java·算法·全栈