Я пытаюсь выполнить запрос в elasticsearch, чтобы получить список продуктов с наибольшим процентом изменения продаж. Результаты агрегирования должны быть сгруппированы по productId и отсортированы по salesChangePercent . Я искал решение и пробовал решения, такие как сортировка результатов поиска по первому запросу elasticsearch , но я не могу отсортировать сегменты агрегации по salesChangePercent . Следующий запрос - единственный, который работает, однако мне он не кажется правильным, поскольку я использую "max_salesChangePercent" для сортировки.
Я здесь что-то делаю не так? Есть ли лучший или более чистый способ сортировки ведер агрегации? Очень признателен за любую помощь, которую я могу получить для улучшения запроса.
GET product_sales/_search
{
“size”: 0,
“query”: {
“range”: {
“salesChangePercent”: { “gte”: 50 }
}
},
“aggs”: {
“unique_products”: {
“terms”: {
“field”: “productId”,
“order" : {
“max_salesChangePercent”: “desc”
}
},
“aggs”: {
“top-sales”: {
“top_hits”: {
“size”: 1,
“_source”: {
“includes”: [
“productId”,
“productName”,
“salesChangePercent”,
]
}
}
},
“max_salesChangePercent”: {
“max”: {
“field”: “salesChangePercent”
}
}
}
}
}
}