Scroll
You can use the operation to retrieve a large number of results. For example, for machine learning jobs, you can request an unlimited number of results in batches.
To use the scroll
operation, add a scroll
parameter to the request header with a search context to tell OpenSearch how long you need to keep scrolling. This search context needs to be long enough to process a single batch of results.
Because search contexts consume a lot of memory, we suggest you don’t use the scroll
operation for frequent user queries. Instead, use the sort
parameter with the search_after
parameter to scroll responses for user queries.
OpenSearch caches the results and returns a scroll ID to access them in batches:
"_scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAAUWdmpUZDhnRFBUcWFtV21nMmFwUGJEQQ=="
Pass this scroll ID to the scroll
operation to get back the next batch of results:
{
"scroll": "10m",
"scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAAUWdmpUZDhnRFBUcWFtV21nMmFwUGJEQQ=="
}
Using this scroll ID, you get results in batches of 10,000 as long as the search context is still open. Typically, the scroll ID does not change between requests, but it can change, so make sure to always use the latest scroll ID. If you don’t send the next scroll request within the set search context, the scroll
operation does not return any results.
With a single scroll ID, you get back 10 results. You can have up to 10 IDs.
Close the search context when you’re done scrolling, because the scroll
operation continues to consume computing resources until the timeout:
DELETE _search/scroll/DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAAcWdmpUZDhnRFBUcWFtV21nMmFwUGJEQQ==
To close all open scroll contexts:
GET _search/scroll/<scroll-id>
POST _search/scroll/<scroll-id>
All scroll parameters are optional.
{
"succeeded": true,