有没有办法将两个单独的`Searchkick :: Results`对象合并为一个

时间:2018-04-05 07:24:27

标签: ruby elasticsearch searchkick

有没有办法将两个单独的Searchkick::Results对象合并为一个。

E.g

user = User.search("abc", where: { <condition 1 > })
blog = Blog.search("abc", where: { <condition 2 > })

将两个结果合并到一个Searchkick :: Results对象,以便我可以使用分页,相关性搜索等作为一个单元。

我看了Multi Search,但这似乎没有做我想要的事情

PS:我在searchkick repo asking the same

打开了一张罚单

2 个答案:

答案 0 :(得分:0)

user = User.search("abc", where: { <condition 1 > })

blog = Blog.search("abc", where: { <condition 2 > })

使用concat方法将两个对象转换为数组并合并数组。

user_blog = user.to_a.concat(blog.to_a)

答案 1 :(得分:0)

您可以使用以下方法搜索多个索引:

where = {
  _or: [
    {_type: "user", somefield: "value1"},
    {_type: "blog", otherfield: "value2"}
  ]
}
Searchkick.search "abc", index_name: [User, Blog], where: where

Source