当前位置: 首页 > news >正文

ElastaticSearch -- es深度分页 searchAfter

searchAfter深度分页

es一次只能查1万条数据,如果超过1万,会报错如下:

        "reason": {"type": "query_phase_execution_exception","reason": "Result window is too large, from + size must be less than or equal to: [10000] but was [10001]. 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."}

可以调整es配置的index.max_result_window这个参数,来查询更多的数据,但这并不是很好的办法,最好使用 searchAfter.

searchAfter作用类似于以下sql语句:

-- 查询第10001--10005条数据
SELECT * FROM  t_user  order by name,birthDay  LIMIT 10000,5;

dsl

  • 第一次查询,查询1–10000条数据,找出第10000条数据的排序字段结果
GET /user_info/_search
{"size": 10000,"sort": [{"name": {"order": "asc"}},{"birthDay": {"order": "desc"}}]
}
  • 第二次查询,根据上面最后一条数据的排序字段,查询出第 10001–20000条数据;
    多了一个search_after的查询条件,对应的排序字段为第一步查出来的最后一条数据(也就是第10000条数据)的排序字段
GET /user_info/_search
{"size": 10000,"sort": [{"name": {"order": "asc"}},{"birthDay": {"order": "desc"}}],"search_after": ["wang", "1993-12-01"]
}

java代码

    public SearchSourceBuilder searchAfterTest() {SearchSourceBuilder searc = new SearchSourceBuilder().size(10000);BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
//        boolQuery.filter(QueryBuilders.termQuery("province", "深圳市"));searc.sort("name", SortOrder.ASC).sort("birthDay", SortOrder.DESC);String[] searchAfter = new String[]{"wang", "1993-12-01"};searc.searchAfter(searchAfter);return searc.query(boolQuery);}
http://www.lryc.cn/news/231771.html

相关文章:

  • 【2021集创赛】Arm杯二等奖-基于Arm核的智慧病房手势识别方案
  • 通过注解统计接口调用耗时
  • Oracle-动态sql学习笔记,由易至难讲解七个例子
  • Kafka 的应用场景
  • 保驾“双十一” 博睿数据助力电商零售迎高峰无烦忧
  • F.binary_cross_entropy、nn.BCELoss、nn.BCEWithLogitsLoss与F.kl_div函数详细解读
  • 后端接口性能优化分析
  • 【ceph】ceph集群中使用多路径(Multipath)方法
  • Xshell+Xftp通过代理的方式访问局域网内网服务器
  • 对盒子中的材料进行计数
  • 科技驱动固定资产管理变革:RFID技术的前沿应用
  • Django路由层之有名分组和无名分组、反向解析、路由分发、伪静态的概念、名称空间、虚拟环境、Django1和Django2的区别
  • 【nlp】2.5 人名分类器实战项目(对比RNN、LSTM、GRU模型)
  • 海康Visionmaster-环境配置:MFC 二次开发环境配置方法
  • 利用EXCEL中的VBA对同一文件夹下的多个数据文件进行特定提取
  • FPGA时序约束(七)文献时序约束实验测试
  • 【数据库开发】DataX开发环境的安装部署(Python、Java)
  • Flutter实践一:package组织
  • SpringCloud微服务:Ribbon负载均衡
  • 【教程】大气化学在线耦合模式WRF/Chem
  • GDS 命令的使用 srvctl service TAF application continuity
  • go 语言之 select
  • 23款奔驰GLC260L升级小柏林音响 全新15个扬声器
  • ssh 免密码登录
  • 小程序使用腾讯位置插件获取当前位置
  • 零基础学Python怎么学习?我来告诉你
  • 开源软件 FFmpeg 生成模型使用图片数据集
  • Linux Shell 通配符 / glob 模式
  • 深入了解域名与SSL证书的关系
  • 计算属性与watch的区别,fetch与axios在vue中的异步请求,单文本组件使用,使用vite创建vue项目,组件的使用方法