У меня есть набор данных, проиндексированный в elasticsearch. (имя индекса: demoindex1, имя типа: SearchTech). Я хочу вернуть все результаты в формате JSON с помощью Java. Мой код Java выглядит следующим образом:
import java.net.InetAddress;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.search.SearchHit;
public class App {
public static void main(String[] args) throws Exception {
Client client = TransportClient.builder().build().addTransportAddress(
new InetSocketTransportAddress(InetAddress.getByName("localhost"),
9300));
SearchResponse scrollResp = client.prepareSearch("demoindex1")
.setScroll(new TimeValue(60000)).setTypes("SearchTech").setSize(1000)
.execute().actionGet();
// Scroll until no hits are returned
while (true) {
for (SearchHit hit : scrollResp.getHits()) {
System.out.println(hit.getSourceAsString()); //hit.get
}
scrollResp = client.prepareSearchScroll(scrollResp.getScrollId())
.setScroll(new TimeValue(60000)).execute().actionGet();
// Break condition: No hits are returned
if (scrollResp.getHits().getHits().length == 0) {
break;
}
}
}
}
Моя java-программа возвращает исходную часть каждого обращения. Но я хочу вернуть все результаты, как мы получаем в Elasticsearch, используя запрос GET index/type/_search. Мне нужен результирующий набор данных обратно в формате JSON. Что я здесь делаю неправильно?
-Я читал документацию JAVA для elasticsearch, но ничего не нашел о том, как вернуть весь результирующий набор данных.
Спасибо.