您可以使用子聚合来实现。从ES 6.1开始,composite
聚合也可以派上用场(尽管仍处于试验阶段)。
查询可能如下所示:
POST bidder_server_stats/doc/_search
{
"size": 0,
"aggs": {
"by bc": {
"terms": {
"field": "bc"
},
"aggs": {
"by log_dt_st": {
"terms": {
"field": "log_dt_st"
},
"aggs": {
"sum(avg_price)": {
"sum": {
"field": "avg_price"
}
}
}
}
}
}
}
}
响应看起来像这样:
{
...
"aggregations": {
"by bc": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "2513",
"doc_count": 2,
"by log_dt_st": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": 1528439776073,
"key_as_string": "2018-06-08T06:36:16.073Z",
"doc_count": 2,
"sum(avg_price)": {
"value": 16.800000190734863
}
}
]
}
},
{
"key": "2514",
"doc_count": 1,
"by log_dt_st": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": 1528439776073,
"key_as_string": "2018-06-08T06:36:16.073Z",
"doc_count": 1,
"sum(avg_price)": {
"value": 10
}
}
]
}
}
]
}
}
}
片刻考虑:
:响应评论中的问题,因为它将改善答案。