Elasticsearch 滚动查询请求
在Elasticsearch中,一次查询只能得到一次独立的结果,在分页中这是很不方便的。当用Elasticsearch进行第n页查询的时候,Elasticsearch在内部查询了从开始到n页的所有数据,只是在返回的时候抛弃了前面n-1页的内容。这样对查询大量数据的时候是非常不方便的。但Elasticsearch提供了滚动API来解决此问题
为了使用scroll,在第一次搜索请求的查询中指定scroll参数,它告诉Elasticsearch需要保持搜索的上下文多长时间。例如:
GET http://x:9200/20001_event/_search?scroll=1m&pretty= Body 类型 : application/json { "size": 20, "query": { "match": { "person_id": "6042" } }, "sort": [ "_doc" ] }
保持时间的参数如下所示:□y——年□M——月□w——周□d——天□h——小时□m——分钟□s——秒
返回值中包含一个scroll_id,可将这个ID传递给scroll API来搜索下一个批次的内容。在下一次查询中的实例如下。
GET http://x:9200/_search/scroll?pretty= Body 类型 : application/json { "scroll" : "1m", "scroll_id" : "xxx" }
每一次调用scroll查询返回下一批的结果,直到返回为空("hits":[]),表示查询完成。
scroll参数告诉Elasticsearch应保持多长时间的搜索。这个值并不需要长到可以处理所有的数据,只要够处理前一批次结果的时间。每一个滚动请求设置一个新的有效时间。
当滚动超时的时候会自动删除搜索上下文,然而保持滚动打开会产生成本,所以当scroll不再被使用的时候需要显式地清除滚动接口。方法如下。
DELETE http://x:9200/_search/scroll Body 类型 : application/json { "scroll_id": ["xxx"] }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报