Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Elasticsearch全局搜索多个索引上的不同筛选器_Java_Search_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Search Engine - Fatal编程技术网 elasticsearch,search-engine,Java,Search,elasticsearch,Search Engine" /> elasticsearch,search-engine,Java,Search,elasticsearch,Search Engine" />

Java Elasticsearch全局搜索多个索引上的不同筛选器

Java Elasticsearch全局搜索多个索引上的不同筛选器,java,search,elasticsearch,search-engine,Java,Search,elasticsearch,Search Engine,我们在弹性搜索中有多个索引,希望搜索所有索引中的数据,但我们希望对不同的索引应用不同的过滤器 例如: 很少有索引依赖于client\u id,因此需要client\u id过滤器 我们在少数索引中有is_deleted标志,因此需要is_deleted过滤器 如何在弹性搜索中实现这一点 此外,我们正在使用突出显示功能,它应该给用户提供建议。但我们希望忽略突出显示结果中的某些字段。是否可以在全局级别排除某些字段?使用嵌套在布尔查询中的过滤查询,这是可能的 此示例演示了基本设置(请注意如何使用不

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

例如:

  • 很少有索引依赖于
    client\u id
    ,因此需要
    client\u id
    过滤器
  • 我们在少数索引中有
    is_deleted
    标志,因此需要
    is_deleted
    过滤器
如何在弹性搜索中实现这一点


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

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

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

这段特定的代码可能适用于您的ES客户机,也可能不适用于您的ES客户机,但它应该给出一个相当好的概念

请注意,查询“meow”出现两次,您可能希望使用一个变量来在两个索引中搜索相同的内容。而且,
multi\u match
显然可以是其他类型的查询

 @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' } }
             ]
           }
         }
       }
     ]
   }
 })