мне нужно агрегировать массив следующегоАгрегирование массив значений в elasticsearch
Два примера документа:
{
"_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. Я попытался агрегацией терминов и сумма, но не могу выводить желаемый результат.
Изменения в структуре документа могут быть сделаны, поэтому, если что-то подобное мне поможет, я был бы рад узнать.
У вас есть сопоставление для этого индекса, который вы можете предоставить? –