请阅读Elasticsearch, Tire, and Nested queries / associations with ActiveRecord
下面的类似问题的答案假设我在上面的问题中提供了Book模型的以下字段:
field :account_tags, type: Array # [{:account_id => 1, :tags => ["tag1", "tag2"], :acccount_id => 2, :tags => ["tag3", "tag4"] }]
我现在想设置一个索引来搜索这些account_id或标签。
我该怎么做?
答案 0 :(得分: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
这是我用来制作系统原型的裸机解决方案。