Elasticsearch 5: сортировка по цене ближайшего оптовика - PullRequest
1 голос
/ 04 июня 2019

У меня есть вложенный документ продукта, содержащий список цен, связанных с различными оптовиками.Вот пример документа:

{
    "sku": "065879",
    "name": "My product",
    "price": [
        {
            "wholesaler": "1",
            "location": "drm3btev3",
            "price": "12.34"
        },
        {
            "wholesaler": "2",
            "location": "gbsuv7ztq",
            "price": "45.67"
        },
    ]
}

При заданной географической точке клиента, какой правильный запрос для получения списка документов, отсортированных по цене, с использованием только ближайшей цены для каждого документа?

Заранее спасибо!

1 Ответ

0 голосов
/ 04 июня 2019

Это не реальный ответ, но глобальный подход заключается в использовании вложенной сортировки . Вложенная сортировка позволит вам отфильтровать вложенный документ, к которому вы хотите применить сортировку.

Затем вы должны в вложенном фильтре сортировки добавить запрос сценария, который определит ближайшего оптовика. Проблема в том, что вы не можете работать с геохэшами безболезненно. Но если вы преобразуете геохэш в тип данных геопункта, вы сможете использовать функции расстояния между скриптами (пример здесь )

Тогда вы можете вычислить минимальное расстояние, перебирая все вложенные документы и сопоставляя только один с минимальным расстоянием.

Но я понятия не имею о влиянии на производительность и детальной реализации.

Удачи!

...