Т.е. мне необходима группировка по определённому полю как в MySQL, без сортировки по количеству встречающихся terms.
Фактически этот запрос выполняет всё нужное мне, кроме сортировки по результатам поиска.
Так же при помощи aggs я подтягиваю для terms нужные мне поля для выгрузки. Возможно есть какой-нибудь простой вариант?
Нет, тут сортировка термов, по тому что встречается в aggregations, а мне нужно на уровень выше по hits так называемым. Я пробовал делать сортировку по hits, но выдавало ошибку.
Ниже полный запрос который я шлю. Если приводить пример из mysql, то я хочу что-то типа
SELECT * FROM table GROUP BY pr_article_search
Только без сортировки по количеству встречающихся pr_article_search.
Результат выполнения этого запроса вот здесь можно посмотреть И там первый найденный pr_article_search это AMDSA15R, а в terms первый это 4431008C00
Для моего запроса поиска выдаёт вот такие результаты.
В этом же запросе если я получаю terms по полю pr_article_search то вот такой порядок сортировки.
А мне нужно, что бы сортировка terms была в том же порядке что и у результатов поиска.
Условно говоря. Я делаю поиск по каком-либо слову/предложению. Получаю результаты поиска. И для каждого результата мне нужно получить сколько у меня ещё встречается записей у которых одинаковое pr_article_search. Но при этом что бы больше не повторялись результаты.
На живом примере. Предположим, что у меня есть вот такие записи
Я бы в два запроса это сделал. В первом - получаем результаты, потом для каждого результата из первого запроса, формируем filter aggs во втором запросе с size: 0.
Дело в том, что поиск выполняется в 2 этапа. На первом этапе мы только ищем, и сортируем, на втором - запрашиваем результаты полученные в результате сортировки. Все запросы агрегации выполняются во время 1-го этапа. То есть, когда агрегация происходит, мы еще не знаем, как результаты будут отсортированы. Так что единственный способ получить все за один запрос - это запросить абсолютно все термины и потом выкинуть то, что не вошло в 10 топ результатов.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.