私はElasticsearchとElasticsearch Rails gemを使用しています。私はActiveRecordを介して関連付けられている2つのモデルを持っており、それらをElasticsearchでインデックス付けして検索しようとしています。私はまた私のフロントエンドUIとしてSearchkitを使用していますElasticsearch Railsインデックス問題
def as_indexed_json
end
settings index: { number_of_shards: 1 } do
mapping dynamic: 'false' do
indexes :city
indexes :state
end
end
:
はここ
store.rb
has_many :addresses
has_many :jobs
def as_indexed_json
self.as_json(include: {
customer: { include: { addresses: {}, jobs: {} } },
vendors: {}
})
end
settings index: { number_of_shards: 1 } do
mapping dynamic: 'false' do
indexes :id
indexes :store_number
indexes :manager
indexes :customer do
indexes :first_name
indexes :addresses do
indexes :city
indexes :state
end
indexes :jobs do
indexes :job_number
end
end
end
end
ここに私のアドレスのモデルである私の店モデルです。 Searchkitは、ストアモデル(ストア番号とマネージャなど)にあるすべての属性を集約して表示することができます。ただし、ネストされた項目を表示することはできません。言い換えれば、顧客の下にあるジョブの下でjob_numbersを集約して取得することはできません。私は顧客名などを見ることができます。私はタイプを使用しようとしました:ジョブと他のすべてのオブジェクトの隣に「ネスト」されていますが、それは違いはありません。私はas_indexed_jsonの調整も試みました。いずれにせよ、これについて何か考えている?私はこの1つに困惑しています。
このすべてのおかげで、私はあなたが言っていることに従うと思います。私はあなたがas_indexed_jsonメソッドをオーバーライドすると言っているときは唯一確かではないと思います。アドレスとジョブは顧客モデル上にあります。ですから、私はこれを顧客モデルに置くべきですか?私が持っている階層は、store - > customer - > addressまたはstore - > customer - > jobsです。私はself.addresses.map(&:city)を理解していますが、どこに置いていいか分かります。これに助けてくれてありがとう。 –
@MikeRileyあなたが投稿したコードから、 'store'モデル' has_many' 'addresses'と' store'も 'has_many''' jobs'のように' store'があなたの検索可能なモデルであると仮定しています。 'store'レコードです。その場合、私が投稿したものはすべて 'store'モデルに入ります。 –