У меня есть поиск elasticsearch для поиска по вариантам каталога продуктов. В основном, где:
Продукт has_many variantsVariant принадлежит_от продукту
И вариант json / mapping индекса содержит имя продукта.
Я пытаюсь искать варианты, сгруппированные по id продукта, размер ведра 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 ) с использованием агрегатора.
В ES 6.0 вы можете это сделать. Обратите внимание, что размер ограничивает количество возвращаемых данных, и чем больше вы запрашиваете более дорогостоящий запрос, он должен выполняться. Поэтому, если вам действительно нужно много тысяч, вы, вероятно, захотите попробовать другой подход. Возможно, что-то, где вы создали отдельный свернутый индекс для продуктов, которые вы могли искать / сортировать, вместо того, чтобы пытаться сделать это с помощью агрегаций.
Ссылка: https://www.elastic .co / гид / ен / elasticsearch / справочник / ток / поиск-агрегаций-ковшеобразные-термы-aggregation.html # поиск-агрегирование-ковшеобразные-термы-агрегации порядка