elasticsearch - ElasticSearch中具有独立过滤器的多类型搜索

标签 elasticsearch ruby-on-rails-2 tire

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

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中是否有任何过滤器可以做到这一点?

最佳答案

得到了答案...

您可以使用不存在或术语过滤器的组合或组合...

    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

关于elasticsearch - ElasticSearch中具有独立过滤器的多类型搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14137975/

相关文章:

ruby-on-rails - 如何将引用列更改为多态?

elasticsearch - Elasticsearch 中的分析器

ruby-on-rails - Elasticsearch、轮胎与协会

symfony - 在ElasticSearch中管理关系的最佳方法是什么?

elasticsearch - Drupal中具有DDEV和Elasticsearch连接器的问题

jquery - Hibernate Search:如何查询父类中的字段?

elasticsearch - 使用轮胎的模块的映射和设置

mysql - Rails Query 选择最新记录的最佳方法

elasticsearch - 是否热衷于使用轮胎在custom_filters_score的条件过滤器上设置minimum_match?

python - 或者在 Elasticsearch 过滤器中