所以首先我运行以下命令:
curl -s -XGET http://localhost:9200/my_index/_search?scroll=1m&search_type=scan&size=10
返回一个滚动id,然后在第一个滚动请求中使用:
curl -s -XGET http://localhost:9200/_search/scroll?scroll=1m&scroll_id=<scroll_id from above>
文档会让我相信,当我运行第二个curl请求时,我应该得到一个新的scroll id。
然而,看起来我一直得到相同的滚动id回来。
看起来每个请求返回的数据都是不同的,所以我假设一切正常
怎么回事?
以上内容是正确的。
scroll_id在后续的滚动请求中可能相同,也可能不相同。但是结果集(hits)在随后的滚动调用中肯定是不同的。
scroll_id可能会在多个调用过程中发生变化,因此需要始终传递最新的scroll_id作为后续请求的scroll_id。
在大多数情况下scroll_id将保持不变,它可能会改变的时候,看看这个页面的结尾https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/search_operations.html在代码示例的注释中它说:
// When done, get the new scroll_id
// You must always refresh your _scroll_id! It can change sometimes
这意味着获得相同的滚动id为后续请求是好的,但不是强制性的。