Hello,
In our use case we need the ability to been able to get all search results for a particular index. The problem is that multiple users (some automated ones) may do this (or attempts to do this) at the same time. From my understanding i have the following possibilities:
-
Use Scroll API. However from what i understand Scroll API allows 1 cursor by index at a time. Spliced scroll only accelerates the data transfer, by spicing the scroll, but does not allow 2 different queries to each run at the same time.
-
Use Search After (https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-search-after.html ). My understanding is i can do multiple queries using search after at the same time. However it says in the documentation that : " the
search_after
parameter is stateless, it is always resolved against the latest version of the searcher. For this reason the sort order may change during a walk depending on the updates and deletes of your index". What exactly does it implies ?
2.1 If somebody insert a document it may not appear ?
2.2 If i delete a document and search after happens to have the deleted document id as a search after parameter.
2.3 Is it possible to obtain duplicates value of the same document? -
What is the performance impact on using Search After versus Scroll API, especially if the number of documents returned is very large (millions+).
Thanks in advance