網(wǎng)上很多都是ES2.X的猾编,這里是基于最新版本的6.2的SDK
MultiSearchResponse多次查詢集合:
在添加實(shí)踐聚合和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++;
????????}
轉(zhuǎn)載自:http://blog.goc6.com/view/7