我正在使用 Tire 和 ActiveRecord 为弹性搜索的数据集建立索引。我有一个 Artist 模型,它有_many :images。如何索引返回特定图像的 Artist 模型的方法?或者引用关联模型的方法?我想要的艺术家结果将包括与艺术家关联的主要图像的路径(原始图像和缩略图)。
我试过这个映射:
mapping do
indexes :id, :index => :not_analyzed
indexes :name
indexes :url
indexes :primary_image_original
indexes :primary_image_thumbnail
end
引用这些 Artist 方法:
def primary_image_original
return images.where(:priority => 'primary').first.original
end
def primary_image_thumbnail
return images.where(:priority => 'primary').first.thumbnail_150
end
这只是忽略了索引方法。基于Elasticsearch、Tire 和 Nested queries/associations with ActiveRecord等其他答案,我尝试了这个:
mapping do
indexes :id, :index => :not_analyzed
indexes :name
indexes :url
indexes :images do
indexes :original
indexes :thumbnail_150
indexes :priority
end
end
def to_indexed_json
to_json(include: { images: { only: [:original, :thumbnail_150, :priority] } } )
end
但这也不会返回我所追求的。我花了几个小时在谷歌上搜索并阅读了 elasticsearch 和 Tire 文档,但还没有找到可以遵循的这种模式的工作示例。谢谢你的想法!