Я попытался запустить простую поисковую прокрутку эластичного поиска, используя Java API высокого уровня, и он возвращает результаты поиска, но программа продолжает работать после извлечения всех данных ....
Почему это продолжать работать и как это исправить?
public boolean ScrollUsers( UserSegmenter ref ) throws IOException {
final Scroll scroll = new Scroll(TimeValue.timeValueSeconds(10));
SearchRequest searchRequest = new SearchRequest("usertest");
searchRequest.scroll(scroll);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//searchSourceBuilder.query(MatchQuery("title", "Elasticsearch"));
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search( searchRequest, RequestOptions.DEFAULT );
String scrollId = searchResponse.getScrollId();
SearchHit[] searchHits = searchResponse.getHits().getHits();
while (searchHits != null && searchHits.length > 0) {
// I am printing fetched data here
SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
scrollRequest.scroll(scroll);
searchResponse = client.scroll(scrollRequest, RequestOptions.DEFAULT);
scrollId = searchResponse.getScrollId();
searchHits = searchResponse.getHits().getHits();
}
ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
clearScrollRequest.addScrollId(scrollId);
ClearScrollResponse clearScrollResponse = client.clearScroll(clearScrollRequest, RequestOptions.DEFAULT);
return clearScrollResponse.isSucceeded();
}
В моем коде больше нет запущенных потоков ... Эта функция предназначена только для тестирования.
РЕДАКТИРОВАТЬ: Это не время l oop. Я пытался удалить его, результаты те же
public static void main(String[] args) {
//System.out.println("hi");
UserSegmenter obj = new UserSegmenter();
obj.segmentUsers();
System.out.println("finishing main");
}
Я получаю сообщение "Finning Main", но программа продолжает работать