网上很多都是ES2.X的,这里是基于最新版本的6.2的SDK
MultiSearchResponse多次查询集合:
在添加实践聚合和dateRange之前:
SearchRequestBuilder responsebuilder = client.prepareSearch(index)
.setTypes(type);
SearchRequestBuilder responsebuilder2 = client.prepareSearch(index)
.setTypes(type);
AggregationBuilder aggregation = AggregationBuilders
.dateHistogram("time")
.field("@timestamp")
.dateHistogramInterval(DateHistogramInterval.seconds(second));
MultiSearchResponse sr = client.prepareMultiSearch()
.add(responsebuilder.setQuery(QueryBuilders.boolQuery()
).addSort("@timestamp", SortOrder.ASC).addAggregation(aggregation))
.add(responsebuilder2.setQuery(
QueryBuilders.rangeQuery("status")
.from("200")
.to("399")
).addSort("@timestamp", SortOrder.ASC).addAggregation(aggregation)).execute().actionGet();//
List logPercentList = new ArrayList();
int i = 0;
for (MultiSearchResponse.Item item : sr.getResponses()) {
SearchResponse response = item.getResponse();
InternalDateHistogram agg = response.getAggregations().get("time");
int j = 0;
for (InternalDateHistogram.Bucket entry : agg.getBuckets()) {
long docCount = entry.getDocCount(); // Doc count
DateTime data = (DateTime)entry.getKey();
LogPercent logPercent = null;
if(i==0) {
logPercent = new LogPercent();
logPercent.setNormoalPv(0L);
logPercent.setPercent(0.0);
logPercent.setTimes(data.getMillis());
logPercent.setTotalPv(docCount);
logPercentList.add(logPercent);
}else {
logPercent = logPercentList.get(j);
logPercent.setNormoalPv(docCount);
if(logPercent.getTotalPv()==0) {
logPercent.setPercent(100);
}else {
logPercent.setPercent(Double.parseDouble(new DecimalFormat("#.000").format((docCount+0.0)/logPercent.getTotalPv()*100)));
}
}
j++;
}
i++;
}