不要急,总有办法的

Elasticsearch scroll查询,不是说第一次查询没有结果吗,只有scrollId。

Elasticsearch | 作者 c2ch | 发布于2018年09月30日 | 阅读数:3387

SearchResponse sr = CLIENT.prepareSearch(EsSearch.getIndexName(masterIp, snifferDataAbnormal))
.setScroll(new TimeValue(Constants.SCROLL_TIME)).setQuery(query).setSize(SSML).execute().actionGet();


int sizeIterator = 100000;
ClearScrollRequestBuilder clearRequest = CLIENT.prepareClearScroll();
while (sizeIterator > 0 && sr.getHits().getHits().length > 0) {
logger.info("totalhits:" + sr.getHits().getTotalHits());
logger.info("transactionId:" + sr.getHits().getHits().length);
/*这里第一次查询就有了结果。*/

for (SearchHit hit : sr.getHits()) {
JSONObject hitJson = JSON.parseObject(hit.getSourceAsString());
hitJson.put("masterIp", context.masterIp());
try {
this.resolveHit(hitJson, context);
} catch (Exception e) {
logger.error("exception happened when resolve data to relationship", e);
return context;
}
}
try {
sr = CLIENT.prepareSearchScroll(sr.getScrollId()).setScroll(new TimeValue(60000)).execute().actionGet();
} finally {
sizeIterator = sizeIterator - SSML;
}
}
已邀请:

weizijun - elasticsearch fan

赞同来自:

scroll第一次就会返回结果,之前的search_type=scan好像第一次没结果,scroll方式是第一次就有结果,且会返回scroll_id

要回复问题请先登录注册