【问题标题】:Elasticsearch global search different filter on multiple indexesElasticsearch 全局搜索多个索引上的不同过滤器
【发布时间】:2014-03-12 06:13:35
【问题描述】:

我们在 Elastic Search 中有多个索引,希望在所有索引中搜索数据,但我们希望对不同的索引应用不同的过滤器。

例如:

  • 很少有索引依赖于client_id,因此需要client_id 过滤器
  • 我们在少数索引中有is_deleted 标志,因此需要is_deleted 过滤器

在 Elastic Search 中应该如何处理这个问题?

此外,我们正在使用突出显示功能,该功能应该向用户提供建议。但我们想忽略突出显示结果中的某些字段。是否可以在全局级别排除某些字段?

【问题讨论】:

    标签: java search elasticsearch search-engine


    【解决方案1】:

    这是可能的,使用过滤查询,嵌套在布尔查询中

    此示例说明了基本设置(注意如何使用不同的过滤器):

     @results = elastic_client.search([:dogs, :cats], {
       :bool => {
         :should => [
           # cats
           {
             :filtered => {
               :query => {
                 :multi_match => {
                   :query => 'meow', # repeated, replace with a variable
                   :type => 'phrase_prefix',
                   :fields => ['name', 'age']
                 }
               },
               :filter => {
                 :and => [
                   { :term => { :owner_id => '123' } },
                   { :type => { :value => 'cat' } }
                 ]
               }
             }
           },
           # dogs
           {
             :filtered => {
               :query => {
                 :multi_match => {
                   :query => 'meow', # repeated, replace with a variable
                   :type => 'phrase_prefix',
                   :fields => ['name', 'color']
                 }
               },
               :filter => {
                 :and => [
                   { :term => { :kennel_id => '456' } },
                   { :type => { :value => 'dog' } }
                 ]
               }
             }
           }
         ]
       }
     })
    

    此特定代码可能适用于您的 ES 客户端,也可能不适用,但它应该可以很好地了解这个概念。

    请注意,查询“meow”出现了两次,您可能想改用变量来在两个索引中搜索相同的内容。此外,multi_match 显然可能是其他类型的查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-04
      • 1970-01-01
      • 2019-09-23
      • 1970-01-01
      • 2017-06-17
      • 2014-09-08
      • 2016-09-26
      • 2021-08-12
      相关资源
      最近更新 更多