parsing_exception:没有为[filtered]

时间:2017-02-24 14:36:41

标签: php search elasticsearch laravel-5.3

我正在尝试查找所有不包含字段的结果' open_location'。我使用以下代码。但它给了我打印结果的错误。错误是, parsing_exception:没有为[filtered]

注册[query]

我已经看到了这个问题,我的解决方案, 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);

1 个答案:

答案 0 :(得分:1)

在Elastic 5中不推荐使用已过滤的查询,我猜你正在使用它。另外,你说你正在寻找不包含该字段的文档,但是你的代码说它“绝对不会”“丢失”。

如果您需要该字段不存在,请尝试以下操作:

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