2013-12-06 2 views
2

Я использую elasticsearch для обслуживания людей, когда они используют раскрывающийся список. Все идет нормально. Сейчас я пытаюсь выяснить, можно ли искать разные типы с разными типами/фильтрами/ограничениями.Поиск по индексу поиска с разными разностями

До сих пор я нашел свой выход с различными фильтрами для каждого типа и своего рода сортами. Я получил различные фильтры с булевым запросом, используя tos и сортировку в зависимости от результатов. Моя цель состоит в том, чтобы показать всего 10 строк, где 8 из них должны быть продуктами, 2 строки должны быть категориями. Для категорий этот предел должен быть максимальным, если нет категорий для отображения, должно отображаться 10 продуктов. Я прочитал документы, и я вижу, что размер может быть задан для запроса тела, например сортировки. Но сортировка имеет большую гибкость. Так что да, вопрос о пределе - есть ли способ его достижения?

+2

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-multi-search.html? – Damien

+0

О да, не видел этого. Благодаря! –

ответ

1

То, о чем вы просите, похоже, сворачивается или группируется в поле.

Там длинный просроченным билет для этой функции на вопрос трекера Elasticsearch: https://github.com/elasticsearch/elasticsearch/issues/256, с последним обновлением бытия (от http://www.elasticsearch.com/blog/from-amsterdam-with-love-elasticsearchs-second-company-all-hands/), что в то время как прогресс, он не придет раньше, после того, как 1,0 Выпущена:

Мы снова выяснили, что необходимо для правильной поддержки свертывания поля при выполнении распределенной среды, а также возможности получения внутренних обращений (для вложенных/родительских дочерних случаев). У нас есть хорошая идея о том, какой тип рефакторинга нам нужен в нашей инфраструктуре поиска, и надеемся решить его после 1.0.

До добавлена ​​эта функция, ваш лучший выбор для выполнения нескольких запросов и объединить их результаты так, как вы хотите, используя multi search api как это было предложено Damien. Это означает создание одного запроса на поиск по требуемой группе (в вашем случае, установка индекса/типа для каждого поиска) и разбор сортировки JSON.