ElasticSearch / Tire仅返回一个索引的结果

时间:2013-11-07 15:13:03

标签: ruby-on-rails ruby rubygems elasticsearch tire

现在我有以下代码:

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) 

1 个答案:

答案 0 :(得分:2)

只需添加size参数,因为 elasticsearch 默认大小为10,这必须仅限于您案例中的object1_index搜索空间

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

<强>更新

对于分页,您可以添加from参数