Rails Elastic Search with Tire没有找到关联记录

时间:2013-07-05 18:08:34

标签: ruby-on-rails elasticsearch tire

我有一个简单的Rails应用程序,其中Post模型属于一个创建者(它是一个User对象),我想查找与创建者的first_name匹配的帖子。

class Post < ActiveRecord::Base
  include Tire::Model::Search
  include Tire::Model::Callbacks
  belongs_to :creator, polymorphic: true

  mapping do
    indexes :id, type: 'integer'
    indexes :title, boost: 10
    indexes :creator do
      indexes :first_name
      indexes :service_type
    end
  end
end

当我运行搜索时,没有结果:

Post.tire.search(load: true, page: params[:page], per_page: params[:per_page]) do
  query do
    match 'creator.first_name', 'Matt'
  end
end

即使我已经运行rake environment tire:import:all FORCE=true并验证帖子存在时,数据库中的创建者名字为“Matt”。

我有什么遗失的吗?谢谢!

更新:

将以下内容添加到Post.rb可以解决问题:

def to_indexed_json
  as_json.merge(
    creator: creator.as_indexed_json
  ).to_json
end

显然,您需要在to_indexed_json中指定关联才能使其正常工作。

0 个答案:

没有答案