Я пытаюсь получить отфильтрованное значение суммы из результата агрегации, который является частью того же запроса.В запросе я получаю для BMW результат:
"key": "BMW",
"doc_count": 1,
"sum#showDays": {
"value": 15
}
Где я на самом деле хочу, это значение суммы # 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" }
}
}
}
}
}