![](/img/trans.png)
[英]elasticsearch must_not clause specifically does not work with empty string “” as value
[英]Elasticsearch 7.0: filter must_not query error
我在Windows 8计算机上使用elasticsearch-py 7.0和elasticsearch服务器7.0。
我有这个查询:
{
'size': 10000,
'query': {
'bool': {'must_not': {'filter': [{'term': {'status': 'ok'}}]}
}
}
}
映射是这样的:
"mappings": {
"properties": {
"name": {"type": "text"},
"status": {"type": "keyword"},
"date": {"type":"date"}
}
}
它遵循docs中为布尔查询指定的规则,但由于抛出语法错误而无法使用:
RequestError:RequestError(400,“ parsing_exception”,“没有为[过滤器]注册任何[查询]”)
但是,如果删除“ must_not”元素,则它可以工作:
{
'size': 10000,
'query': {
'bool': {'filter': [{'term': {'status': 'ok'}}]}
}
}
我在这里做错了什么?
filter
子句(查询)必须出现在匹配的文档中。 但是与查询分数不同的是,忽略该分数。 Filter子句在过滤器上下文中执行,这意味着计分被忽略,并且子句被视为用于缓存。
must_not
子句(查询)不得出现在匹配的文档中。 子句在过滤器上下文中执行,这意味着计分被忽略,并且子句被视为用于缓存。 由于计分被忽略,因此所有文档的分数均返回0。
filter
和must_not
都是bool
查询的子句,并且以相同的方式工作。 要使用must_not
则需要删除filter
:
{
'size': 10000,
'query': {
'bool': {
'must_not': {
'term': {
'status': 'ok'
}
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.