package pl.allegro.tech.search.elasticsearch.tools.reindex.process;
import org.elasticsearch.action.search.SearchResponse;
public class QueryProcess implements Runnable {
private final ProcessSynchronizer processSynchronizer;
private final QueryComponent queryComponent;
public QueryProcess(ProcessSynchronizer processSynchronizer, QueryComponent queryComponent) {
this.processSynchronizer = processSynchronizer;
this.queryComponent = queryComponent;
}
@Override
public void run() {
try {
SearchResponse response = queryComponent.prepareSearchScrollRequest();
if (queryComponent.searchResultsNotEmpty(response)) {
while (true) {
if (processSynchronizer.tryFillQueueWithSearchHits(response)) {
response = queryComponent.getNextScrolledSearchResults(response.getScrollId());
if (queryComponent.getResponseSize(response) == 0) {
break;
}
}
}
}
} catch (final Exception e) {
processSynchronizer.addProcessingException(e);
}
processSynchronizer.subtractWorkingQueryProcess();
}
}