Search After

一般的分页需求我们可以使用form和size的方式实现,但是这种分页方式在深度分页的场景下应该是要避免使用的。深度分页会随着请求的页次增加,所消耗的内存和时间的增长也是成比例的增加,为了避免深度分页产生的问题,elasticsearch从2.0版本开始,增加了一个限制:

index.max_result_window =10000

建议使用Scroll api进行高效深度滚动,但滚动上下文代价很高,建议不要将其用于实时用户请求。该search_after参数通过提供实时游标来解决此问题。

检索第一页的查询如下所示:

POST twitter/_search
{"size": 10,"query": {"match" : {"title" : "elasticsearch"}},"sort": [{"date": "asc"},{"_id": "desc"}]
}

每个文档具有一个唯一值的字段应该用作排序规范的仲裁器。否则,具有相同排序值的文档的排序顺序将是未定义的。建议的方法是使用字段_id,它肯定包含每个文档的一个唯一值。

上面的请求会为每一个文档返回一个包含sort排序值的数组。这些sort排序值可以被用于 search_after 参数里以便抓取下一页的数据。比如,我们可以使用最后的一个文档的sort排序值,将它传递给 search_after 参数:

GET twitter/_search
{"size": 10,"query": {"match" : {"title" : "elasticsearch"}},"search_after": [1463538857, "654323"],"sort": [{"date": "asc"},{"_id": "desc"}]
}

当我们使用 search_after 参数的时候,from参数必须被设置成 0 或 -1 (当然你也可以不设置这个from参数)。

search_after不是自由跳转到随机页面而是并行滚动多个查询的解决方案。它与滚动API非常相似,但与它不同,search_after参数是无状态的,它始终针对最新版本的搜索器进行解析。因此,排序顺序可能会在步行期间发生变化,具体取决于索引的更新和删除。

elasticsearch 深入 —— Search After实时滚动查询相关推荐

  1. 【ES实战】Search的滚动查询(Scroll)

    滚动查询(Scroll) 虽然搜索请求返回结果是单个"页面",但scroll API 可用于从单个搜索请求中检索大量结果(甚至所有结果),其方式与在传统数据库使用相似. scrol ...

  2. ES - 滚动查询(scroll)

    Elasticsearch - 滚动查询scroll 简介 实践中我使用到滚动的场景 from-size分页的缺点 json处理步骤 案例如下 java 处理步骤 代码逻辑 简化版java代码如下: ...

  3. ElasticSearch利用Search After解决深度分页问题

    ElasticSearch利用Search After解决深度分页问题 1.ElasticSearch常见分页 2.ElasticSearch深度分页问题 3.ElasticSearch深度分页问题的 ...

  4. ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台

    来源:http://www.cnblogs.com/zclzhao/p/5749736.html 一.简介 ELK 由三部分组成elasticsearch.logstash.kibana,elasti ...

  5. ElasticSearch - 玩转搜索之花式查询

    文章目录 ElasticSearch - 玩转搜索之花式查询 1.term的多种查询 1.1 索引以及数据准备 1.2 term精准匹配查询 1.3 Exist非空值文档查询 1.4 Prefix前缀 ...

  6. elasticsearch 版本 6.6 插入和查询数据

    1. 引入POM文件 <dependencyManagement> <dependencies> <!-- es 查询 --><dependency>& ...

  7. Elasticsearch实现商品搜索(关键字查询 条件筛选 规格过滤 价格区间搜索 分页查询 排序查询 高亮查询)

    Elasticsearch实现商品搜索 商品搜索 1.根据关键字查询 2.条件筛选 2.1 品牌筛选 2.1.1 需求分析 2.1.2 代码实现 2.2 规格过滤 2.2.1 需求分析 2.2.2 代 ...

  8. vue 移动端歌词实时滚动及优化

    在做移动端酷我音乐的时候,发现歌词随着音乐滚动是一个小难点,说难也不难,但是说简单的话也不简单.大家请求歌词返回的类型可能不太一样,但是判断逻辑都是一样的. 左边是我的歌曲详情页面,右边的是我的歌词请 ...

  9. 快递100快递实时快递查询接口API案例代码

    一.实时快递查询接口 1.1 请求地址 https://poll.kuaidi100.com/poll/query.do 1.2 请求类型 post 1.3 输入参数 请求参数(header) 名称 ...

最新文章

  1. 【.Net】vs2017 自带发布工具 ClickOnce发布包遇到的问题
  2. HTML5 手机端动态适配
  3. IIS利用X-Forwarded-For获得来访者的真实IP
  4. 线性回归原理与spark/sklearn实现
  5. 理解zookeeper选举机制
  6. 能干什么_闲鱼流量系统能干什么?真的有用吗?
  7. POJ 1953 (DP)
  8. 烂泥:dnsmasq搭建简易DNS服务器
  9. 如何写好一个UITableView
  10. Python的web相关及Django简介
  11. 使用Postman进行get、put、post端口测试
  12. 图书管理系统的E-R图和数据库模型图
  13. Python读取pdf无框线表格_Python将PDF数据解析为表格形式
  14. 计算机信息系统集成高级工程师,软考信息系统项目管理师(高级资格/高级工程师)简介...
  15. 只要3步,如何用Python发送通知到微信?
  16. 中国参与MOOC 建设的大学有多少所?
  17. 数据挖掘十大经典算法(转存)
  18. Linux实现ISCSI共享设备
  19. SCB_SCR寄存器
  20. 中国大学慕课——程序设计与算法(一)第三周测验

热门文章

  1. 前端开发需要学python吗_2018为什么一定要学Python? 小白专享!1部电影的时间入门python!...
  2. 最新章节 第285节 计算机房的用户们,第285节 更热闹了
  3. 判断点在三角形内部方法
  4. 宝塔里的站点和数据库站点都无法打开
  5. JavaScript合并网页表格中内容相同的相邻单元格
  6. 基于Leaflet实现图标旋转角度的效果(附源代码下载)
  7. 计算机桌面软件打不开,电脑桌面后的软件都打不开怎么办
  8. 什么是白皮书?【理解较局限,仅个人学习记录】
  9. ctl672笔上的两个按键_【和冠 Bamboo CTL-672/K2-F 数位板使用总结】连接|便携|绘画_摘要频道_什么值得买...
  10. Excel的发展历史