0

以下のElasticsearch、Tire、およびNestedクエリ/ActiveRecordとの関連付けに関する同様の質問に対するこの回答をお読みください

上記の質問で提供されたBookモデルに次のフィールドを追加したとしましょう。

field :account_tags, type: Array # [{:account_id => 1, :tags => ["tag1", "tag2"], :acccount_id => 2, :tags => ["tag3", "tag4"] }]

ここで、これらのaccount_idまたはタグを検索するためのインデックスを設定したいと思います。

どうすればいいですか?

4

1 に答える 1

0

私はこの問題を解決し、簡単でした。私のマッピングは次のようになります

mapping do 
  ...  
  indexes :account_tags do
    indexes :account_id, :index => "not_analyzed"
    indexes :tags, :type => 'string', :analyzer => 'keyword'
  end
end

私の to_indexed_json は次のようになります

def to_indexed_json
  {
    ...
    account_tags: account_tags
  }.to_json
end

今私は経由で検索することができます

@query = "account_id:#{account_id}"
@tags = tags

Book.tire.search :load => true do |search|
  search.query do |query|
    query.string @query
  end

  search.filter :terms, :tags => @tags
end

これは、システムのプロトタイプを作成するために使用した基本的なソリューションです。

于 2013-01-28T21:43:38.077 に答える