2016-11-06 11 views
0

Elasticsearch嵌套聚集如何创建与ES JAVA API以下嵌套AGG查询用JAVA

比方说我的查询看起来像以下:

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代码应somethink这样的:

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

回答

1

addAggregation方法是这样的:

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