При получении документов из Elasticsearch можно сортировать результаты поиска. Если вы знакомы с реляционными базами данных, то это эквивалентно пункту запроса ORDER BY.
Я выполню поиск по термину "макароны", как обычно, и упорядочу результаты по полю количества в порядке убывания.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | GET /ecommerce/product/_search { "query": { "match": { "name": "pasta" } }, "sort": [ { "quantity": { "order": "desc" } } ] } |
Как вы могли заметить, свойство sort содержит массив объектов. Это означает, что при желании можно добавить несколько порядков сортировки, как в реляционных базах данных. Если вы это сделаете, то обратите внимание, что порядок объектов важен, так как результаты сортируются по первому критерию. Документы, чьи значения первой сортировки идентичны, затем сортируются по второму критерию. Эта концепция продолжается для любого количества критериев сортировки, которые вы добавляете.
Глядя на результаты, мы видим, что продукты действительно были отсортированы по наибольшему количеству. Давайте изменим порядок сортировки на восходящий.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | GET /ecommerce/product/_search { "query": { "match": { "name": "pasta" } }, "sort": [ { "quantity": { "order": "asc" } } ] } |
Теперь товары с наименьшим количеством располагаются первыми в результатах.
Это все, что можно сказать о сортировке документов в результатах поиска.