首先,我运行以下内容:
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>
The documentation会让我相信当我运行第二个卷曲请求时,我应该得到一个新的滚动ID。
然而,看起来我不断获得相同的滚动ID。
看起来每个请求返回的数据都不同,所以我假设一切正常。
发生了什么事?
答案 0 :(得分:18)
上面的内容是正确的。
在后续滚动请求中,scroll_id可能相同也可能不同。但结果集(命中)在后续滚动调用中明显不同。
scroll_id可能会在多个调用过程中发生变化,因此需要始终将最新的scroll_id作为后续请求的scroll_id传递。
答案 1 :(得分:0)
在大多数情况下,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很好,但不是强制性的。