私の検索は正常に動作しています。 しかし、私は "1"または "2"とタイプして "ルームメイト"または "サブレット"の結果を得なければなりません。 モデルには、category_id
という整数の列があります。 モデルCategory
には文字列の列:name
があります。Railsでelasticsearchを使用してcategory.nameを検索するにはどうすればよいですか?
したがって、私は1が「ルームメイト」と2は下記
を「転貸」であるさCATEGORY_IDてきたが、私の住宅のモデルである:私はfields: ['title^10', 'category_id']
を修正することができますので、ユーザが「ルームメイト」を検索することができますどのように
class Housing < ActiveRecord::Base
extend FriendlyId
friendly_id :title, use: :slugged
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks
belongs_to :user
belongs_to :category
validates :title, :presence => true
validates :category_id, :presence => true
validates :created_at, :presence => false
validates :user_email, :presence => true
validates :description, :presence => false
validates_length_of :title, :maximum => 30
def self.search(query)
__elasticsearch__.search(
{
query: {
# multi_match: {
simple_query_string: {
query: query,
fields: ['title^10', 'category_id']
}
}
}
)
end
end
代わりにルームメイトの結果を得るために整数 "1"を検索する必要がありますか?
私はfields: ['title^10', 'category.name']
を試しましたが、動作しませんでした。
を使用して検索可能であることになる。.. –
'カテゴリーにhas_many:housings'と'住宅belongs_toの:category'私は関係を持っています。私はそれを変更する必要がありますか? –
このマッピングはどこで定義されていますか? 'belongs_to:category'関連がある住宅モデルで定義している場合はうまくいくはずです。しかし、あなたが検索する必要があるすべての属性をインデックス化する必要があります。ここでは、 'category.name'と' title'だけを索引付けしました。また、Elasticsearchは既にさまざまな形式で文書を索引付けしているため、索引を最初に再作成する必要があることに注意してください。 –