我为每个帐户都有一个单独的索引,其中指定了每个模型的映射(用户和评论 - 只是一个示例,实际的应用程序有很多模型)。
include Tire::Model::Search
Tire.index('account_1') do
create(
:mappings => {
:user => {
:properties => {
:name => { :type => :string, :boost => 10 },
:company_name => { :type => :string, :boost => 5 },
:blocked => { :type => :boolean, :include_in_all => false }
}
},
:comments => {
:properties => {
:description => { :type => :string, :boost => 5 }
}
}
}
)
end
如何在搜索查询中添加过滤器,以便只有被阻止的用户=>在搜索结果中返回true。 这不应影响评论类型的搜索结果。 这可能吗?在elasticsearch中是否有任何过滤器可以做同样的事情?
答案 0 :(得分:1)
得到答案......
您可以使用不存在和术语过滤器的组合或组合...
search_key = 'test'
Tire.search [account_1] do
query do
filtered do
query { string search_key }
filter :or, { :not => { :exists => { :field => :blocked } } },
{ :term => { :blocked => true } }
end
end
end