2017-01-19 10 views
1

私は、特定のフィールドがnullであることを弾性で検索するクエリを作成しようとしています。このクエリはPythonのElasticsearch Clientを使用してPythonで実行されます。elasticクエリでフィールドがnullの場合

は、クエリ:

{ 
    "_source": ["name"], 
    "query": { 
       "nested": { 
        "path": "experience", 
        "query": { 
         "match": { 
          "experience.resignation_date": { 
           "query": None 
          } 
         } 
        } 
       } 
      } 
} 

そのパイソン以来、私は、クエリの一部にNoneを使用していないが、それは私にこのエラーを投げます。

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

を探していますguide/current/_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"となります。

これは、ヌルフィールドとプロパティが一揃っていないドキュメントに一致します。これがあなたにとってより適切かどうかは、あなたの必要に応じて決まります。

EDIT:次の回答が「欠落」を示しているため、現在は廃止されました。代わりに、代わりに "exists"クエリを否定することです。

query: { 
    bool: { 
     must_not: { 
      exists: "experience.resignation_date" 
     } 
    } 
} 
関連する問題