elasticsearch,多个字段的统计聚合 JAVA API

elasticsearch, stats aggregation on multiple fields JAVA API

我测试了以下聚合查询,运行 没问题。我想知道如何使用其 JAVA API 构建等效查询。事实上,我有每个元素的 List<String> 我想查看统计信息。我怎样才能动态地做到这一点?

提前致谢。

{
  "from" : 0,
  "size" : 0,
  "aggs": {
    "value_stats" :{
      "stats": {
        "field" : "value"
      }
    },
    "qty_stats":{
      "stats": {"field" : "qty"}
    }
  }
}

使用他们的 AggregationBuilders

添加聚合非常简单
// 1. replace this list of fields with yours
List<String> statFields = getFields();

// 2. bootstrap the query
SearchRequestBuilder search = node.client().prepareSearch()
    .setSize(0).setFrom(0)
    .setQuery(QueryBuilders.matchAllQuery());

// 3. add a stats aggregation for each of your fields
for (String field : statFields) {
    search.addAggregation(AggregationBuilders.stats(field+"_stats").field(field));
}

// 4. execute the query
SearchResponse response = search.execute().actionGet();