弹性搜索Rails查找关联的模型属性

时间:2015-08-07 10:33:24

标签: ruby-on-rails elasticsearch elasticsearch-model

我在Rails项目中使用弹性搜索。我正在使用elasticsearch-model gem进行实时全文搜索。假设模型A属于模型B.如果我在模型A上进行搜索,我将根据搜索参数获得10条A记录。

A.search(x) => Gives 10 records which includes all attributes of A.

但是当我通过A访问模型B时:A.B.some_attrib我正在

 undefined method B for <Elasticsearch::Model::Response::Result>

如何在ElasticSearch中加载关联?

此外,我想要搜索结果中的所有记录。如何在搜索方法中指定match_all?

2 个答案:

答案 0 :(得分:1)

关于associated_model的

请参阅此链接https://github.com/elastic/elasticsearch-rails/blob/master/elasticsearch-model/examples/activerecord_associations.rb

关注

Include Elasticsearch::Model and callbacks并进行索引映射。
在两个关联模型中包含模块。

  

注意:不要忘记导入模型。

答案 1 :(得分:0)

您可以使用as_indexed_json方法配置模型关联。 这是psuedo代码:

def as_indexed_json(options={})
 self.as_json(
   include: {
     b: { only: :col1}
   }
 )
end