我正在尝试编写一个查询,它在弹性中搜索特定字段为null。这个查询我们使用Python Elasticsearch Client在python中执行。
查询:
{
"_source": ["name"],
"query": {
"nested": {
"path": "experience",
"query": {
"match": {
"experience.resignation_date": {
"query": None
}
}
}
}
}
}
因为它的python我在查询部分使用了None,但它给我这个错误。
elasticsearch.exceptions.RequestError: TransportError(400, 'parsing_exception', '[match] unknown token [VALUE_NULL] after [query]')
答案 0 :(得分:3)
{@ 1}}查询已被弃用,您正在寻找bool/must_not
+ exists
missing
答案 1 :(得分:1)
使用此表达式,您不是要查询null,而是说使用null作为查询。
查询必须始终是ElasticSearch定义的查询类型之一,例如“匹配”查询。
你想在这里写的语法是
query: {
match: {
"experience.resignation_date": None
}
}
您断言该值与“无”匹配
但是,有一个更好的特定查询类型,用于匹配名为“missing”的空字段值的文档。
它将匹配空字段以及缺少属性的文档。这是否更适合您取决于您的需求。
编辑:正如后续回答指出“失踪”现在实际上已被弃用。相当于取而代之的是“存在”查询。
query: {
bool: {
must_not: {
exists: "experience.resignation_date"
}
}
}