一、背景

1.ES默认分页from+size

2.在大数据量和深度分页的时候,效率非常低

二、效率低原因

1.例如要查第501页的10条数据,from为5000,size为10

2.ES会查询并排序5010条数据,即处理了from+size条数据

3.ES为了性能,限制了分页数量,最大为1万,max_result_window = 10000,因此不能分页到1万条数据以上

4.对于1万条以上的数据查询,ES直接返回查询失败

三、改进

1.方式一、scroll滚动搜索

a.在第一次搜索的时候,保存一个视图快照,之后基于视图快照提供数据

b.无法查询到实时数据

c.查询语句,要指定scroll参数,值为时间窗口,例如scroll=5m

d.第一次查询会返回scroll_id,之后的查询要带着scroll_id参数

2.方式二、search_after

a.ES5之后提供search_after,是假分页方式,根据上一页的最后一条,确定下一页的位置

b.可以查询到实时数据

c.类似于瀑布流式的分页查询

参考:

https://www.cnblogs.com/hello-shf/p/11543453.html

最新文章

  1. 如何在虚拟机里安装Linux
  2. 订货(bzoj 2424)
  3. ajax之jsonp跨域请求
  4. Spring的问题解决记录
  5. thinkphp 内置标签volist 控制换行
  6. 关于Redis持久化
  7. 正则转nfa:bug出现。
  8. C#的提交表单方式WebClient
  9. dorado7第一次使用感受
  10. Qt入门(11)——Qt插件
  11. ssh的学习
  12. 名字修饰约定extern "C"与extern "C++"浅析
  13. Base64编码 概念和用途
  14. QT LNK2019 无法解析的外部符号
  15. 转:selenium 并行启动多个浏览器
  16. Spring Framework 5.0 新特性
  17. Node.js 网络
  18. Kafka运行一段时间报错Too many open files
  19. python设计模式---创建型之工厂模式
  20. 三、HTTP基础路由详解

热门文章

  1. vue-element-admin 怎么改后端 可以调跳过登录并且发送接口请求
  2. webgl 系列 —— 绘制一个点(版本2、版本3、版本4、版本5)
  3. 在 Ubuntu 22 的基础上进行 Hadoop 伪分布式(HDFS)的搭建
  4. centos7中关闭防火墙命令
  5. JavaScript查找两个节点的最近的一个共同父节点,可以包括节点自身
  6. Java学习笔记(二)java流程控制
  7. MySql创建高性能的索引
  8. fabric学习笔记9
  9. vue 利用xlsx、xlsx-style、file-saver实现前端导出excel表格 (包括设置单元格居中、边框等样式) antdesignvue、elementui、vxetable 等都适用
  10. 重写父类的ToString