2

我为每个帐户都有一个单独的索引,其中指定了每个模型的映射(用户和评论 - 只是一个示例,实际应用程序有很多模型)。

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中是否有任何过滤器可以做同样的事情?

4

1 回答 1

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
于 2013-01-11T05:52:19.357 回答