elasticsearch 深入 —— Scroll滚动查询
Scroll
search 请求返回一个单一的结果“页”,而 scroll API 可以被用来检索大量的结果(甚至所有的结果),就像在传统数据库中使用的游标 cursor。
滚动并不是为了实时的用户响应,而是为了处理大量的数据,例如,为了使用不同的配置来重新索引一个 index 到另一个 index 中去。
client 支持:Perl 和 Python
注意:从 scroll 请求返回的结果反映了 search 发生时刻的索引状态,就像一个快照。后续的对文档的改动(索引、更新或者删除)都只会影响后面的搜索请求。
为了使用 scroll,初始搜索请求应该在查询中指定 scroll 参数,这可以告诉 Elasticsearch 需要保持搜索的上下文环境多久(参考Keeping the search context alive),如 ?scroll=1m。
POST /twitter/tweet/_search?scroll=1m
{"query": {"match" : {"title" : "elasticsearch"}}
}
使用上面的请求返回的结果中包含一个 scroll_id,这个 ID 可以被传递给 scroll API 来检索下一个批次的结果。
POST /_search/scroll
{"scroll" : "1m", "scroll_id" : "c2Nhbjs2OzM0NDg1ODpzRlBLc0FXNlNyNm5JWUc1"
}
GET或者POST可以使用- URL不应该包含
index或者type名字——这些都指定在了原始的search请求中。 scroll参数告诉 Elasticsearch 保持搜索的上下文等待另一个1mscroll_id参数
每次对 scroll API 的调用返回了结果的下一个批次知道没有更多的结果返回,也就是直到 hits 数组空了。
为了向前兼容,scroll_id 和 scroll 可以放在查询字符串中传递。scroll_id 则可以在请求体中传递。
curl -XGET 'localhost:9200/_search/scroll?scroll=1m' -d 'c2Nhbjs
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
