Elastic - группировка по двум полям
Подскажите пожалуйста, существует ли возможность сгруппировать данные по двум полям в elastic? Я пробовал так:
POST /index_name/_search?size=1
{
"aggs": {
"top_tags": {
"terms": {
"field": "UUID.keyword",
"size": 300
},
"aggs": {
"aggs_group": {
"top_hits": {
"_source": {
"includes": ["UUID.keyword", "Name" ]
},
"size": 100
}
}
}
}
}
}
Но этот вариант не подходит так как возвращает документы с одинаковыми названиями.
"hits" : [
{
"_index" : "index_name",
"_type" : "_doc",
"_id" : "ZrWX5XkBn2kNP2wYL0gw",
"_score" : 1.0,
"_source" : {
"Name" : "Name1"
}
},
{
"_index" : "index_name",
"_type" : "_doc",
"_id" : "slyU0HkBCTEcNR_DY8Yx",
"_score" : 1.0,
"_source" : {
"Name" : "Name1"
}
},
Буду благодарен за любую помощь
Ответы (1 шт):
Автор решения: vhar
→ Ссылка
Посмотрите в сторону multi_terms
К примеру, я группирую по трем полям так
{
"aggs": {
"tours": {
"multi_terms": {
"terms": [
{"field": "hotel_id"},
{"field": "tour_date_from"},
{"field": "tour_nights"}
]
}
}
}
}