我正在尝试从属于同一查询的一部分的汇总结果中获取经过过滤的总和值。在查询中,我得到宝马的结果:
"key": "BMW",
"doc_count": 1,
"sum#showDays": {
"value": 15
}
我真正想要的是sum#showDays的值为10,因为BMW只参与了其中一场表演。
使用ES 5.6,文档结构和查询如下:
POST sum-test/sum-type?refresh
{
"id": "1",
"name": "USA",
"motorshows": [
{
"name": "Detroit",
"days": 10,
"manufacturers": [
{
"name": "Mercedes",
"id": 1
},
{
"name": "BMW",
"id": 2
}
]
},
{
"name": "LA",
"days": 5,
"manufacturers": [
{
"name": "Mercedes",
"id": 1
},
{
"name": "Ford",
"id": 3
}
]
}
]
}
post sum-test/_search?pretty=true&typed_keys=true
{
"size": 1,
"aggs": {
"group_by_man_name": {
"terms": {
"field": "motorshows.manufacturers.name.keyword",
"order": {"showDays": "desc"}
},
"aggs": {
"showDays": {
"sum": { "field": "motorshows.days" }
}
}
}
}
}