Executing a scroll/scan search
The standard query works very well if you need to provide results in which documents do not change too often. Otherwise, doing pagination with live data brings a strange behavior to the returned results. To bypass this problem, ElasticSearch provides an extra parameter in the query: the scroll.
Getting ready
You need a working ElasticSearch cluster and a working copy of Maven.
The code of this recipe is in chapter_10/nativeclient in the code bundle of this book available on Packt's website and the referred class is ScrollScanQueryExample.
How to do it...
The search is done as in the previous recipe. The big difference is a setScroll timeout, which allows storing in memory the resultant IDs for a query for a defined timeout.
We can change the code of the previous recipe by using scroll in the following way:
import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchType; import org.elasticsearch.client.Client; import org...