Reputation: 1701
How to create the following nested agg query with ES JAVA API
Let's say my query is looking like the following :
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"
}
}
}
}
}
the java code should be somethink like this :
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();
please any suggestions ? :)
BR
Upvotes: 0
Views: 3446
Reputation: 458
Your addAggregation method would be like:
public AggregationBuilder addAggregation(){
return AggregationBuilders.dateHistogram("group_by_time").field("time").interval(DateHistogram.Interval.HOUR)
.subAggregation(AggregationBuilders.sum("sum_player_load").field("playerload"));
}
Upvotes: 3