Невозможно отсортировать ведро агрегации, приводит к elasticsearch - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь выполнить запрос в 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”
                    }
                }
            }
        }
    }
}
...