我想得到一个子聚合的和。例如,我按智能手机分组,按运营商分组,然后是该运营商的平均价格。我想要一部特定智能手机的所有运营商的所有价格之和。所以基本上,我想要这样的东西:
{
"aggs": {
"group_by_smartphones": {
"terms": {
"field": "smartphone",
"order": {
"_term": "asc"
},
"size": 200
},
"aggs": {
"group_by_sum": {
"sum": {
"field": "price"
},
"aggs": {
"group_by_carrier": {
"terms": {
"field": "carrier",
"order": {
"group_by_avg": "desc"
}
},
"aggs": {
"group_by_avg": {
"avg": {
"field": "price"
}
}
}
}
}
}
}
}
}
}但是,当我这样做的时候,我得到了一个错误:
“类型”:"aggregation_initialization_exception",“原因”:“sum类型的聚合器group_by_sum不能接受子聚合”。
我如何修正它,这样我就可以得到每部智能手机的所有价格之和?
发布于 2017-07-18 05:01:38
您就快到了,实际上,sum和group_by_carrier子聚合都需要在相同的级别上:
{
"aggs": {
"group_by_smartphones": {
"terms": {
"field": "smartphone",
"order": {
"_term": "asc"
},
"size": 200
},
"aggs": {
"sum_prices": {
"sum": {
"field": "price"
}
},
"group_by_carrier": {
"terms": {
"field": "carrier",
"order": {
"group_by_avg": "desc"
}
},
"aggs": {
"group_by_avg": {
"avg": {
"field": "price"
}
}
}
}
}
}
}
}https://stackoverflow.com/questions/45150450
复制相似问题