首页/数据/NoSQL 速查/scroll 遍历大批量结果
Elasticsearch89 条

scroll 遍历大批量结果

scroll 在查询时创建快照上下文,用 scroll_id 分批取回全部结果,适合全量导出与离线处理;代价是期间段文件不能合并、占用资源。

NoSQL 速查数据更新于 2026-10-12
创建POST /<index>/_search?scroll=1m 携带 size
翻页POST /_search/scroll 传 scroll_id 与新的保持时间
收尾DELETE /_search/scroll 显式释放,不要只依赖超时

示例

示例
POST /my-index/_search?scroll=1m
{ "size": 1000, "query": { "match_all": {} } }

POST /_search/scroll
{ "scroll": "1m", "scroll_id": "<上一步返回的 scroll_id>" }

DELETE /_search/scroll
{ "scroll_id": ["<scroll_id>"] }
scroll 返回的是发起时刻的视图,期间被删除或更新的文档仍按旧版本返回;数据量大时优先考虑 PIT + search_after。

易错点

  • 忘记 DELETE 清理 scroll 会持续占用段引用与堆内存,导出任务结束务必释放
  • scroll 的每批耗时过长会让上下文超时失效,size 不要设得过大

数据来源与参考

  • Elasticsearch Guide: Scroll API
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌