ElasticSearch Aggregator с сортировкой по тексту / ключевому слову - PullRequest
0 голосов
/ 05 июня 2018

У меня настроен эластичный поиск для поиска по каталогам товаров.В основном, где:

Товар имеет_ много вариантов, размер ведра 1. Я могу это сделать и отсортировать по минимальной цене, максимальной цене и т. д.

Это работает:

POST /variants/_search?size=0
{
    "aggs" : {
        "min_price" : { "min" : { "field" : "price" } }
    }
}

Это (вроде) то, что мне нужноследующее:

POST /variants/_search?size=0
{
    "aggs" : {
        "product_name" : { "sort by product_name asc / desc" }
    }
}

Моя последняя задача - сортировать их по алфавиту, но мне кажется, что я не могу отсортировать по полю ключевых слов (asc / desc) с помощью агрегатора.

1 Ответ

0 голосов
/ 05 июня 2018

В ES 6.0 вы можете сделать это.Обратите внимание, что размер ограничивает количество возвращаемых данных, и чем больше вы запрашиваете, тем дороже будет выполняться запрос.Так что если вам действительно нужно много тысяч, вы, вероятно, захотите попробовать другой подход.Вероятно, что-то, где вы создали отдельный свернутый индекс для продуктов, которые вы могли бы искать / сортировать вместо того, чтобы пытаться сделать это с помощью агрегатов.

GET /variants/_search
{
    "size": 0,
    "aggs" : {
        "product_name" : {
            "terms" : {
                "field" : "product_name",
                "size": 1000,
                "order" : { "_key" : "asc" }
            }
        }
    }
}

Ссылка: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html#search-aggregations-bucket-terms-aggregation-order

...