2017-02-24 107 views
0

我试图找到所有不包含字段'open_location'的结果。我正在使用下面的代码。但它给了我打印结果的错误。该错误是, parsing_exception:无[查询]对[过滤]parsing_exception:没有[查询]注册为[已过滤]

我已经看到了我的解决这个问题, Best way to check if a field exist in an Elasticsearch document

注册请帮我...

$index_name=$db_name.'_temp_traking'; 

    $para= [ 
     'index' => $index_name, 
     'type' => $index_name, 
     'body' => [ 
      'query' => [ 
       'filtered' => [ 
        'filter' => [ 
         'bool' => [ 
          'must_not' => [ 
           'missing' => [ 
            'field' => 'open_location' 
           ] 
          ] 
         ] 
        ] 
       ] 
      ] 
     ] 
    ]; 
    $response = $client->search($para); 
+0

其中的弹性版本您使用的? – paqash

+0

弹性版本5 – Avishake

+0

您是否使它工作? – paqash

回答

1

过滤后的查询已弃用并在Elastic 5中删除,我猜是你正在使用的。此外,你说你正在寻找不包含该字段的文档,但是你的代码表明它不能'丢失'。

如果你需要的领域不存在,试试这个:

"query": { 
     "bool": { 
      "must_not": { 
       "exists": { 
        "field": "open_location" 
       } 
      } 
     } 
    }