I am trying to fetch a large data records from Elasticsearch (Version - 6.4.2) in a minimal time. To do that, I am using multi threading to run each slice scroll in a separate thread.
example: My query has 3 slices, so:
thread 1 - slice id 0
thread 2 - slice id 1
thread 3 - slice id 2
But while trying to get the results from slice id 1 and 2 it's returning 0 hits.
I am trying RestHighLevelClient#search()
public SearchResponse GetResponse(Integer sliceCount, Integer totalSlice, Integer searchSize, String[] identifiers ) throws IOException
{
SliceBuilder sliceBuilder = new SliceBuilder(sliceCount, totalSlice);
SearchSourceBuilder slicedSource = new SearchSourceBuilder().slice(sliceBuilder);
slicedSource = slicedSource
.query(QueryBuilders.boolQuery()
.must(QueryBuilders.termsQuery("_id", identifiers)));
return client.search(
new SearchRequest()
.indices("indexname")
.types("type")
.scroll("scrolltime")
.source(slicedSource)
);
}