[英]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.