2013-11-07 3 views
5

Сейчас у меня есть следующий код:ElasticSearch/Тир возвращает только результаты для одного индекса

search = Tire.search ['object1_index', 'object2_index'] do |search| 
    search.query { string params[:q] } 
end 

@results = search.results 

Результаты сейчас все ближайшие от только object1, однако, если я удалю «object1_index» с тем же запросом , Я получаю результаты object2. Как я могу заставить мой поиск взаимодействовать с обоими индексами одновременно?

редактировать:

теперь у меня есть следующий (с помощью поиска я, определенный на моих моделях), но, как я буду в конце концов, добавив пагинацию я не уверен, если это лучшая работа вокруг:

object1_results = Object1.search(params).results 
object2_results = Object2.search(params).results 
@results = object1_results + object2_results 
@results.sort!(&:_score) 

ответ

2

Просто добавьте size параметр, так как elasticsearch размер по умолчанию 10, который должен быть ограничение только object1_index пространства поиска в вашем случае

search = Tire.search ['object1_index', 'object2_index'], size: 1000 do |search| 
... 

Update

Для пагинацией, вы можете добавить параметр from