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

mat*_*sko 12 json full-text-search elasticsearch

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

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

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

谢谢.

kar*_*rmi 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并帮助测试解决方案.

UPDATE

当前轮胎(> 0.4)可以很好地加载多个模型实例.例如,请参阅集成测试.