wake-up-neo.net

Am besten prüfen Sie, ob ein Feld in einem Elasticsearch-Dokument vorhanden ist

Kann eine sehr dumme Frage sein, wie kann man am besten prüfen, ob ein Feld eines Dokuments in der Elasticsearch vorhanden ist? Ich kann nichts in der Dokumentation finden.

Wenn dieses Dokument beispielsweise nicht das Feld/den Schlüssel "Preis" enthält, möchte ich das Ergebnis nicht zurückgeben.

{ "aktualisiert": "2015/09/17 11:27:27", "name": "Lidschatten", "Format": "1,5 g/0,05 oz", }

Was ich tun kann?

Vielen Dank

Sie können den exists-Filter in Kombination mit einem bool/must-Filter wie folgt verwenden:

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "exists": {
                "field": "price"
              }
            },
            ...     <-- your other constraints, if any
          ]
        }
      }
    }
  }
}

DEPRECATED (seit ES5) Sie können auch den missing-Filter kombinieren mit einem bool/must_not-Filter

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must_not": [
            {
              "missing": {
                "field": "price"
              }
            }
          ]
        }
      }
    }
  }
}
39
Val

Der exists-Filter wurde von ES 2.1 durch existsquery ersetzt, die Funktionsweise ist jedoch gleich. Außerdem wird der fehlende Filter entfernt und die fehlende Abfrage veraltet.

Um alle Dokumente zu erhalten, die ein bestimmtes Feld haben,

"bool": {
    "must": {
        "exists": {
            "field": "my_field"
        }
    }
}

um alle Dokumente zu erhalten, für die ein bestimmtes Feld NICHT vorhanden ist, verwenden Sie es wie folgt mit must_not

"bool": {
    "must_not": {
        "exists": {
            "field": "my_field"
        }
    }
}

Elastic docs: https://www.elastic.co/guide/de/elasticsearch/reference/2.3/query-dsl-missing-query.html

11
Devi

Sie können vorhandene Filter verwenden:

{
  "query": {
    "filtered": {
      "filter": {
        "exists": {
          "field": "status"
        }
      },
      "query": {
        "match_all": {}
      }
    }
  }
}

Viele Grüße. Alain

9
adouang

Das kannst du direkt machen

{
    "query": {
        "exists": {
            "field": "fieldName"
        }
    }
}

Wenn Sie auch ein Spiel hinzufügen möchten, können Sie dies tun

{
    "query": {
        "bool": {
            "must": [{
                "match": {
                    "fieldName": "value"
                }
            },
            {
                "exists": {
                    "field": "fieldName"
                }
            }]
        }
    }
}

https://www.elastic.co/guide/de/elasticsearch/reference/current/query-dsl-exists-query.html

6
Surya Purohit
GET /_search
{
    "query": {
        "exists" : { "field" : "price" }
    }
}

quelle: https://www.elastic.co/guide/de/elasticsearch/reference/current/query-dsl-exists-query.html

0
thiagofalcao