Sql:
select hour,count(*),avg(billDuration)
from tab
where customerNumber ='13201646126'
group by hour
es:
GET cdr_20200110/_search
{
"size": 3,
"query": {
"term": {
"customerNumber": "13201646126"
}
},
"aggs": {
"hour_sum": {
"terms":{
"field": "hour"
},
"aggs": {
"avg_bill": {
"avg": {
"field": "billDuration"
}
}
}
}
}
}
自己写了个不知道对不对
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("customerNumber","13201646126");
AggregationBuilder aggsBuilder = AggregationBuilders.filter("hour_sum",termQueryBuilder);
TermsAggregationBuilder terms = AggregationBuilders.terms("hour");
AvgAggregationBuilder avgs =AggregationBuilders.avg("avg_bill").field("billDuration");
terms.subAggregation(avgs);
terms.subAggregation(aggsBuilder);