簡體   English   中英

Elasticsearch 7.0:過濾器must_not查詢錯誤

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

filtermust_not都是bool查詢的子句,並且以相同的方式工作。 要使用must_not則需要刪除filter

{
  'size': 10000,
  'query': {
    'bool': {
      'must_not': {
        'term': {
          'status': 'ok'
        }
      }
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM