Агрегирующий массив значений в эластичном поиске
Мне нужно агрегировать массив следующим образом
Два примера документа:
{
"_index": "log",
"_type": "travels",
"_id": "tnQsGy4lS0K6uT3Hwzzo-g",
"_score": 1,
"_source": {
"state": "saopaulo",
"date": "2014-10-30T17",
"traveler": "patrick",
"registry": "123123",
"cities": {
"saopaulo": 1,
"riodejaneiro": 2,
"total": 2
},
"reasons": [
"Entrega de encomenda"
],
"from": [
"CompraRapida"
]
}
},
{
"_index": "log",
"_type": "travels",
"_id": "tnQsGy4lS0K6uT3Hwzzo-g",
"_score": 1,
"_source": {
"state": "saopaulo",
"date": "2014-10-31T17",
"traveler": "patrick",
"registry": "123123",
"cities": {
"saopaulo": 1,
"curitiba": 1,
"total": 2
},
"reasons": [
"Entrega de encomenda"
],
"from": [
"CompraRapida"
]
}
},
Я хочу объединитьcities
массив, чтобы узнать всеcities
traveler
пошел в. Я хочу что-то вроде этого:
{
"traveler":{
"name":"patrick"
},
"cities":{
"saopaulo":2,
"riodejaneiro":2,
"curitiba":1,
"total":3
}
}
Гдеtotal
это длинаcities
массив минус 1. Я попробовал агрегацию терминов и сумму, но не смог вывести желаемый результат.
Могут быть внесены изменения в структуру документа, поэтому, если что-то подобное поможет мне, я был бы рад узнать.