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...