elasticsearch 深入 —— Search After实时滚动查询
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实时滚动查询相关推荐
- 【ES实战】Search的滚动查询(Scroll)
滚动查询(Scroll) 虽然搜索请求返回结果是单个"页面",但scroll API 可用于从单个搜索请求中检索大量结果(甚至所有结果),其方式与在传统数据库使用相似. scrol ...
- ES - 滚动查询(scroll)
Elasticsearch - 滚动查询scroll 简介 实践中我使用到滚动的场景 from-size分页的缺点 json处理步骤 案例如下 java 处理步骤 代码逻辑 简化版java代码如下: ...
- ElasticSearch利用Search After解决深度分页问题
ElasticSearch利用Search After解决深度分页问题 1.ElasticSearch常见分页 2.ElasticSearch深度分页问题 3.ElasticSearch深度分页问题的 ...
- ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台
来源:http://www.cnblogs.com/zclzhao/p/5749736.html 一.简介 ELK 由三部分组成elasticsearch.logstash.kibana,elasti ...
- ElasticSearch - 玩转搜索之花式查询
文章目录 ElasticSearch - 玩转搜索之花式查询 1.term的多种查询 1.1 索引以及数据准备 1.2 term精准匹配查询 1.3 Exist非空值文档查询 1.4 Prefix前缀 ...
- elasticsearch 版本 6.6 插入和查询数据
1. 引入POM文件 <dependencyManagement> <dependencies> <!-- es 查询 --><dependency>& ...
- Elasticsearch实现商品搜索(关键字查询 条件筛选 规格过滤 价格区间搜索 分页查询 排序查询 高亮查询)
Elasticsearch实现商品搜索 商品搜索 1.根据关键字查询 2.条件筛选 2.1 品牌筛选 2.1.1 需求分析 2.1.2 代码实现 2.2 规格过滤 2.2.1 需求分析 2.2.2 代 ...
- vue 移动端歌词实时滚动及优化
在做移动端酷我音乐的时候,发现歌词随着音乐滚动是一个小难点,说难也不难,但是说简单的话也不简单.大家请求歌词返回的类型可能不太一样,但是判断逻辑都是一样的. 左边是我的歌曲详情页面,右边的是我的歌词请 ...
- 快递100快递实时快递查询接口API案例代码
一.实时快递查询接口 1.1 请求地址 https://poll.kuaidi100.com/poll/query.do 1.2 请求类型 post 1.3 输入参数 请求参数(header) 名称 ...
最新文章
- 【.Net】vs2017 自带发布工具 ClickOnce发布包遇到的问题
- HTML5 手机端动态适配
- IIS利用X-Forwarded-For获得来访者的真实IP
- 线性回归原理与spark/sklearn实现
- 理解zookeeper选举机制
- 能干什么_闲鱼流量系统能干什么?真的有用吗?
- POJ 1953 (DP)
- 烂泥:dnsmasq搭建简易DNS服务器
- 如何写好一个UITableView
- Python的web相关及Django简介
- 使用Postman进行get、put、post端口测试
- 图书管理系统的E-R图和数据库模型图
- Python读取pdf无框线表格_Python将PDF数据解析为表格形式
- 计算机信息系统集成高级工程师,软考信息系统项目管理师(高级资格/高级工程师)简介...
- 只要3步,如何用Python发送通知到微信?
- 中国参与MOOC 建设的大学有多少所?
- 数据挖掘十大经典算法(转存)
- Linux实现ISCSI共享设备
- SCB_SCR寄存器
- 中国大学慕课——程序设计与算法(一)第三周测验
热门文章
- 前端开发需要学python吗_2018为什么一定要学Python? 小白专享!1部电影的时间入门python!...
- 最新章节 第285节 计算机房的用户们,第285节 更热闹了
- 判断点在三角形内部方法
- 宝塔里的站点和数据库站点都无法打开
- JavaScript合并网页表格中内容相同的相邻单元格
- 基于Leaflet实现图标旋转角度的效果(附源代码下载)
- 计算机桌面软件打不开,电脑桌面后的软件都打不开怎么办
- 什么是白皮书?【理解较局限,仅个人学习记录】
- ctl672笔上的两个按键_【和冠 Bamboo CTL-672/K2-F 数位板使用总结】连接|便携|绘画_摘要频道_什么值得买...
- Excel的发展历史