0

请阅读我在Elasticsearch、Tire 和 Nested queries/association with ActiveRecord下面的类似问题的答案

假设我在上述问题中提供的 Book 模型中添加了以下字段:

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

我现在想建立一个索引来搜索这些 account_ids 或标签。

我该怎么做?

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 回答