2017-01-19 1 views
1

특정 필드가 null 인 쿼리를 작성하려는 쿼리를 작성하려고합니다.이 쿼리는 Python Elasticsearch Client를 사용하여 Python으로 실행됩니다.elastic 쿼리에서 필드가 null 인 경우

쿼리 :

내가 쿼리 부분에 없음을 사용하지했지만 그것은 나에게이 오류를 던지고는 파이썬 이후
{ 
    "_source": ["name"], 
    "query": { 
       "nested": { 
        "path": "experience", 
        "query": { 
         "match": { 
          "experience.resignation_date": { 
           "query": None 
          } 
         } 
        } 
       } 
      } 
} 

.

elasticsearch.exceptions.RequestError: TransportError(400, 'parsing_exception', '[match] unknown token [VALUE_NULL] after [query]') 
+0

을 찾고 가이드/현재/_dealing_with_null_values.html # _missing_query) – casraf

답변

3

missing 쿼리가되지 않습니다, 당신은 당신이 https://www.elastic.co/guide/en/elasticsearch/ ([실종]을 찾고 bool/must_not + exists

{ 
    "_source": [ 
    "name" 
    ], 
    "query": { 
    "nested": { 
     "path": "experience", 
     "query": { 
     "bool": { 
      "must_not": { 
      "exists": { 
       "field": "experience.resignation_date" 
      } 
      } 
     } 
     } 
    } 
    } 
} 
1

이 표현식을 사용하면 null을 쿼리하지 않고 쿼리에 null을 사용하는 것입니다.

쿼리는 항상 ElasticSearch에서 정의한 쿼리 유형 중 하나 여야합니다 (예 : "일치"쿼리).

구문의 종류는 여기되었다 쓰고 싶었다는 값 일치 "없음"그러나

가, 빈과 문서를 일치시키기위한 더 나은 특정 쿼리 유형이 없음을 주장하는

query: { 
    match: { 
     "experience.resignation_date": None 
    } 
} 

필드 값은 "missing"입니다.

속성이 모두없는 문서뿐만 아니라 null 필드와 일치합니다. 이것이 당신에게 더 적합한 지 여부는 당신의 필요에 달려 있습니다.

편집 : 후속 답변에서 "누락 됨"은 실제로 현재 사용되지 않습니다. 대신 "exists"쿼리를 무효화하는 것이 좋습니다.

query: { 
    bool: { 
     must_not: { 
      exists: "experience.resignation_date" 
     } 
    } 
} 
관련 문제