我正在尝试查找所有不包含字段的结果' 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);
答案 0 :(得分:1)
在Elastic 5中不推荐使用已过滤的查询,我猜你正在使用它。另外,你说你正在寻找不包含该字段的文档,但是你的代码说它“绝对不会”“丢失”。
如果您需要该字段不存在,请尝试以下操作:
"query": {
"bool": {
"must_not": {
"exists": {
"field": "open_location"
}
}
}
}