public RestResult fileChart(){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 搜索源构建对象
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
TermsAggregationBuilder aggregationBuilder = AggregationBuilders
.terms("file_tr").field("file_time")// 桶分组
.size(50)
.subAggregation(AggregationBuilders.sum("file_sum").field("file_size"));// 求和
searchSourceBuilder.aggregation(aggregationBuilder);
// 不输出原始数据
//searchSourceBuilder.size(0);
// 打印dsl语句
log.info("dsl:" + searchSourceBuilder.toString());
// 搜索请求对象
SearchRequest searchRequest = new SearchRequest();
searchRequest.indices("file");
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = null;
try {
searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
log.error("IOException:",e);
return RestResponse.failed("");
}
Map<String,Object> result = new HashMap<>();
Aggregations aggregations = searchResponse.getAggregations();
ParsedDoubleTerms parsedDoubleTerms = aggregations.get("file_tr");
List<? extends Terms.Bucket> buckets = parsedDoubleTerms.getBuckets();
for (Terms.Bucket bucket : buckets) {
//time
String key = new BigDecimal(String.valueOf(((double) bucket.getKey()) * 1000))
.toPlainString().split("\\.")[0];
String formatTime = dateFormat.format(new Date(Long.parseLong(key)));
long docCount = bucket.getDocCount();
//获取数据
Aggregations bucketAggregations = bucket.getAggregations();
ParsedSum sum = bucketAggregations.get("file_sum");
result.put("time",formatTime);
result.put("docCount",docCount);
result.put("sum",sum.getValue());
System.out.println(formatTime + ":" + docCount + "__" + sum.getValue());
}
return RestResponse.success(result);
}
桶和指标 聚合搜索
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- CrOSS是一款针对科研人员的,用于聚合学术搜索,聚合学术内容的学术聚合引擎,希望能帮助科研人员快速找到所需论文,...
- es aggregation,scope,任何的聚合,都必须在搜索出来的结果数据中执行,搜索结果,就是聚合分析操作...
- 41_深入聚合数据分析_搜索+聚合:统计指定品牌下每个颜色的销量 实际上来说,我们之前学习的搜索相关的知识,完全可...