2013-01-18 39 views
0

Elasticsearch,輪胎和嵌套領域請仔細閱讀本回答了類似的問題,我有以下Elasticsearch, Tire, and Nested queries/associations with ActiveRecord用ActiveRecord

可以說,我加入中的以下上面的問題提供了Book模型:

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

我現在想設置一個索引來搜索這些account_id或tags。

我該怎麼做?

回答

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 

這是一個裸去骨的解決方案,我用原型系統進行搜索。