ElasticSearch(轮胎)中的多索引搜索

时间:2012-03-04 18:23:44

标签: json full-text-search elasticsearch

大型Web应用程序提供“全局”搜索,它将来自各种全文索引的数据(这将是SQL中的表)组合在一起,以提供按其得分排序的组合搜索结果。因此,假设您有视频,博客文章和用户,那么当您在搜索中输入“home”时,它可能会产生这样的结果(按分数排序):

  • 我的家(博客文章)
  • 家乡(用户)
  • 我想回家(视频)

有谁知道如何使用ElasticSearch执行这样的组合搜索?最好使用Tire gem for Rails,但原始ElasticSearch JSON数据也可以使用。

感谢。

2 个答案:

答案 0 :(得分:16)

关于 Tire ,有一个重要区别:您是单独使用它还是在ActiveRecord / ActiveModel集成中使用它。

在前一种情况下,只需搜索多个索引Tire.search ['indexA', 'indexB'] do ... end。或者搜索整个群集Tire.search do ... end(相当于curl 'http://localhost:9200/_search?q=*')。

在后一种情况下, Tire 目前还不能很好地处理多模型搜索。请注意此拉取请求:https://github.com/karmi/tire/pull/218 - 使用此补丁构建您的gem并帮助测试解决方案。

<强>更新

当前轮胎(&gt; 0.4)可以正常加载多个模型实例。例如,请参阅integration test

答案 1 :(得分:1)

我非常确定http://127.0.0.1:9200/_search端点可以帮到你。超过99%的数据都在一个索引中,因此我很难在这里为您验证这一点。

另外,请查看多搜索终结点:http://www.elasticsearch.org/guide/reference/api/multi-search.html