2
Java API를 사용하여 Elasticsearch에서 모든 레코드를 가져 오려고합니다. 하지만 아래 오류 메시지가 나타납니다.Java API를 사용하여 Elasticsearch에서 모든 레코드 얻기
n [색인] [데이터 :/읽기/검색] [위상/dfs]]]; 중첩 된 : QueryPhaseExecutionException [결과 창이 너무 커서 + 크기가 [10000]보다 작거나 같아야하며 [10101]이어야합니다.
내 코드는 현재 존재하는 131,881 기록
Client client;
try {
client = TransportClient.builder().build().
addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
int from = 1;
int to = 100;
while (from <= 131881) {
SearchResponse response = client
.prepareSearch("demo_risk_data")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setFrom(from)
.setQuery(QueryBuilders.boolQuery().mustNot(QueryBuilders.termQuery("user_agent", "")))
.setSize(to).setExplain(true).execute().actionGet();
if (response.getHits().getHits().length > 0) {
for (SearchHit searchData : response.getHits().getHits()) {
JSONObject value = new JSONObject(searchData.getSource());
System.out.println(value.toString());
}
}
}
}
총 수 아래로, 그래서 from <= 131881
까지 100 개 개의 레코드를 얻을 다음 from = 1
및 to = 100
와 함께 시작합니다. 내가 Elasticsearch에 더 이상의 레코드가 없을 때까지 100 번을 말하면서 레코드를 확인하는 방법이 있습니까?
완벽한, 정말 감사합니다 –