获取客户端方式 请看前面文章 分页查询代码
public static void perPage() {
//scroll里面的size是相对于每个分片来说的,所以实际返回的数量是:分片的数量*size
TransportClient client = ElasticSearchUtil.getInstance().getEsClient();
BoolQueryBuilder b = QueryBuilders.boolQuery()
// .must(QueryBuilders.matchQuery("alarmName","恶意"))
// .must(QueryBuilders.matchQuery("alarmName","文件"))
// .must(QueryBuilders.termsQuery("alarmName", new String[] {"访问"}))
.must(QueryBuilders.matchQuery("ip1", "192.168.5.18"))
// .must(QueryBuilders.rangeQuery("time").from(1490926962223.0).to(1490926965000.0))
.must(QueryBuilders.termsQuery("level", new int[] {1,3,4}));
SearchResponse actionGet = client.prepareSearch("soc1")
.setTypes("t_event").setSearchType(SearchType.SCAN)
.setQuery(b).setSize(100)//这个游标维持多长时间
.setScroll(TimeValue.timeValueMinutes(1))
.execute().actionGet();
//一共多少条
long count = actionGet.getHits().getTotalHits();
for(int i=0,sum=0; sum<count; i++){
SearchResponse scrollResponse = client.prepareSearchScroll(actionGet.getScrollId()).setScroll(TimeValue.timeValueMinutes(1))
.execute().actionGet();
for (SearchHit hit : scrollResponse.getHits())
{ //getHits 的使用
System.out.println(hit.getSourceAsString());//这样可以获得属性的值
}
sum += scrollResponse.getHits().hits().length;
System.out.println("总量"+count+" 已经查到"+sum);
}
ElasticSearchUtil.getInstance().close(client);
System.out.println("count:"+count);
}