Behebung von ElasticSearch 'no [query] registered for [missing]'

English Deutsch

Problem:

Du versuchst, eine ElasticSearch-Abfrage wie

query-missing.json
{
    "query": {
        "missing" : { "field" : "myfield" }
    }
}

auszuführen, um Dokumente zu finden, die myfield nicht haben.

Allerdings siehst du nur eine Fehlermeldung wie diese:

elasticsearch-error.txt
elasticsearch.exceptions.RequestError: RequestError(400, 'parsing_exception', 'no [query] registered for [missing]')

Lösung

Wie die ElasticSearch-Dokumentation uns sagt, gibt es keine missing-Abfrage! Du musst stattdessen eine exists-Abfrage innerhalb einer must_not-Klausel verwenden:

query-exists-mustnot.json
{
    "query": {
        "bool": {
            "must_not": {
                "exists": {
                    "field": "myfield"
                }
            }
        }
    }
}

Check out similar posts by category: Databases, ElasticSearch