【问题标题】:elasticsearch, stats aggregation on multiple fields JAVA APIelasticsearch,多个字段的统计聚合 JAVA API
【发布时间】:2015-07-31 11:41:06
【问题描述】:

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

提前谢谢你。

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

【问题讨论】:

    标签: elasticsearch aggregation


    【解决方案1】:

    使用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();
    

    【讨论】:

    • 我以为我只能调用一次 search.addAggregation() 。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 2018-10-18
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多