大型Web应用程序提供“全局”搜索,它将来自各种全文索引的数据(这将是SQL中的表)组合在一起,以提供按其得分排序的组合搜索结果。因此,假设您有视频,博客文章和用户,那么当您在搜索中输入“home”时,它可能会产生这样的结果(按分数排序):
有谁知道如何使用ElasticSearch执行这样的组合搜索?最好使用Tire gem for Rails,但原始ElasticSearch JSON数据也可以使用。
感谢。
答案 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