/**
* 按时间分组 时间字段为date类型
*/
@Test
public void timeAgg(){
String[] includes = {"user", "message","createTime","age"};
SearchResponse response = client.prepareSearch("twitter").setTypes("tweet")
.addAggregation(AggregationBuilders.dateHistogram("timeAgg").field("createTime")
.dateHistogramInterval(DateHistogramInterval.DAY) //这里是按照day分组,也可以按照month和year
.subAggregation(AggregationBuilders.topHits("top")
.fetchSource(includes,Strings.EMPTY_ARRAY).size(3)))
.get();
Histogram timeAgg = response.getAggregations().get("timeAgg");
for(Histogram.Bucket entry:timeAgg.getBuckets()){
System.out.println(entry.getKey()+"-----"+entry.getDocCount());
TopHits topHits = entry.getAggregations().get("top");
for (SearchHit hit : topHits.getHits()) {
Map<String, Object> map = hit.getSourceAsMap();
System.out.println(map);
}
}
}
欢迎关注我的微信公众号,会同步更新python、java、算法等相关内容!!!