curl -XGET 'localhost:9200/_search/scroll' -d'{ "scroll" : "1m", "scroll_id" : "c2Nhbjs2OzM0NDg1ODpzRlBLc0FXNlNyNm5JWUc1" }'
可以看到上面的请求里面不再需要将第一次的查询参数(比如title == 'elasticsearch')放到request body里面,因为elasticsearch会根据这个scroll_id查到这个id对应的Search Context。 每次的翻页查询都会返回下一页的结果集,直到所有的查询结果都已经返回了,这个时候返回的response里面的hits就会是空的,所以我们可以用 hits来判断是不是查询结束了。 Clear 翻页API 默认Elasticsearch会删除所有timeout的scroll_id对就的search context。但用户也可以提前删除这些scroll_id, 因为如果查询非常频繁时,保留这么多的search context也是需要很多开销的。下面是关于怎么显式地删除这些scroll_id。 curl -XDELETE localhost:9200/_search/scroll -d '{ "scroll_id" : ["c2Nhbjs2OzM0NDg1ODpzRlBLc0FXNlNyNm5JWUc1"]}'你也可以把所有的scroll_id放到一个数组里面一次删除:curl -XDELETE localhost:9200/_search/scroll -d '{ "scroll_id" : ["c2Nhbjs2OzM0NDg1ODpzRlBLc0FXNlNyNm5JWUc1", "aGVuRmV0Y2g7NTsxOnkxaDZ"]}'
要删除所有的scroll_id,可以指定all这个参数: curl -XDELETE localhost:9200/_search/scroll/_all