使用JAVA的Elasticsearch嵌套聚合

维塔利

如何使用ES JAVA API创建以下嵌套的agg查询

假设我的查询如下所示:

 GET /agg_vitaly_test_api_2016-11-01/_search
    {
     "size": 0,
     "query": {
          "range": {
            "time": {
              "gte": "1477962000000",
              "lte": "1477965600000"
            }
          }
     },
      "aggs" : {
           "group_by_time" : {
               "date_histogram" : {
                   "field" : "time",
                   "interval" : "hour"
               },

               "aggs": {
                 "sum_player_load": {
                   "sum": {
                     "field": "playerload"
                   }
                 }
           }
       }
    }

Java代码应该是这样的:

SearchRequestBuilder searchRequestBuilder = FETCH_CLIENT.prepareSearch().setIndices(indexName).setTypes(pixelType.getType()).setSize(0);

           // here need to complete the nested aggregation....
            AggregationBuilder aggb = addAggregation(groupBy);

         searchRequestBuilder.addAggregation(aggb);

  // ....
 SearchResponse res = searchRequestBuilder.execute().actionGet();

请任何建议?:)

BR

西信

您的addAggregation方法将类似于:

public AggregationBuilder addAggregation(){
        return AggregationBuilders.dateHistogram("group_by_time").field("time").interval(DateHistogram.Interval.HOUR)
                                                                        .subAggregation(AggregationBuilders.sum("sum_player_load").field("playerload"));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章