Was ist der Unterschied zwischen einem Begriff, der Abfrage und ein match ein?

Ich habe Dokumente mit string-Felder, die nicht analysiert (erzwungen durch ein mapping oder Global). Ich versuche zu verstehen, was ist der praktische Unterschied zwischen

{
    "query": {
        "bool": {
            "must": [
                {"match": {"hostname": "hello"}},
            ]
        }
    }
}

und

{
    "query": {
        "term": {
            "hostname": "hello"
        }
    }
}

Sah ich Sie in der Dokumentation für Laufzeit Abfragen, dass es einen Unterschied gibt, wenn die Zeichenfolgen analysiert werden, (was nicht mein Fall ist). Gibt es einen Grund für die Verwendung term vs match?

  • term vs match Recht?
  • Ja, sorry – ich meinte match natürlich.
InformationsquelleAutor WoJ | 2016-10-19



One Reply
  1. 9

    In einem term Abfrage, den gesuchten Begriff (z.B. hello) wird nicht analysiert und verglichen wird, genau wie gegen die AGB stellen in den invertierten index.

    In einem match Abfrage, den gesuchten Begriff (z.B. hello) analysiert und erst dann abgestimmt, die gegen die AGB stellen in den invertierten index.

    In Ihrem Fall, da hostname ist not_analyzed in Ihrem mapping, wird Ihre erste Wahl sein sollte, verwenden Sie ein term Abfrage, da macht es keinen Sinn, zu analysieren, ein Begriff, der zur Zeit der Suche für die Suche nach dem gleichen Begriff, die noch nicht analysiert wurden in Erster Linie bei der Indizierung.

    • Dies ist sehr hilfreich und auf den Punkt. Gibt es irgendeine Stelle in der Dokumentation von Elasticsearch, wo dieses erwähnt wird?
    • Eigentlich, wenn Sie eine match Abfrage, ES wird clever genug sein, das zu tun, was ich oben beschrieben habe.
    • Die offiziellen docs erwähnt diese info hier: Term-Basierte Versus Full-Text

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.