elasticsearch,Java,Spring Boot,elasticsearch" /> elasticsearch,Java,Spring Boot,elasticsearch" />

Java 使用ElasticsearchTemplate和聚合器获取聚合值

Java 使用ElasticsearchTemplate和聚合器获取聚合值,java,spring-boot,elasticsearch,Java,Spring Boot,elasticsearch,我在提取聚合值时遇到问题 配置为spring和spring引导启动器数据elasticsearch 文档用户在数据库中多次索引 我想返回字段“commentsCnt”的总和 @Autowired ElasticsearchTemplate elasticsearchTemplate; SearchQuery searchQuery = new NativeSearchQueryBuilder() .withIndices("comment") .wit

我在提取聚合值时遇到问题

配置为spring和spring引导启动器数据elasticsearch

文档用户在数据库中多次索引

我想返回字段“commentsCnt”的总和

@Autowired
ElasticsearchTemplate elasticsearchTemplate;

SearchQuery searchQuery = new NativeSearchQueryBuilder()
    .withIndices("comment")             
    .withQuery(matchQuery("user", userName))       
    .addAggregation(AggregationBuilders.sum("sum_of_comments").field("commentsCnt"))
    .build();

Aggregations aggregations = elasticsearchTemplate.query(searchQuery, 
        new ResultsExtractor<Aggregations>() {
            @Override
            public Aggregations extract(SearchResponse response) {
                return response.getAggregations();
        }
});

Aggregation ret = aggregations.get("sum_of_comments");
@Autowired
ElasticsearchTemplate ElasticsearchTemplate;
SearchQuery SearchQuery=new NativeSearchQueryBuilder()
.带索引(“评论”)
.withQuery(匹配查询(“用户”,用户名))
.addAggregation(AggregationBuilders.sum(“注释之和”).field(“注释之和”))
.build();
聚合聚合=elasticsearchTemplate.query(searchQuery,
新结果提取程序(){
@凌驾
公共聚合摘录(SearchResponse响应){
返回response.getAggregations();
}
});
Aggregation ret=aggregations.get(“注释的总和”);
如何提取价值?也许有更好的方法

    for (Aggregation aggs : aggregations) {

         Sum sum = (Sum) aggs;
         double sumValue = sum.getValue();
          System.out.println("sumValue=" + sumValue);
  }