Suche…


Bemerkungen

Analyzer nehmen den Text aus einem String-Feld und generieren Token, die beim Abfragen verwendet werden.

Ein Analyzer arbeitet in einer Reihenfolge:

  • CharFilters (Null oder mehr)
  • Tokenizer (Eins)
  • TokenFilters (Null oder mehr)

Der Analysator kann auf Zuordnungen angewendet werden, sodass Felder bei der Indexierung auf Token-Basis und nicht auf der gesamten Zeichenfolge durchgeführt werden. Bei der Abfrage wird die Eingabezeichenfolge auch durch den Analysator geleitet. Wenn Sie also Text im Analyzer normalisieren, stimmt der Text immer überein, selbst wenn die Abfrage eine nicht normalisierte Zeichenfolge enthält.

Kartierung

Ein Analyzer kann mithilfe von "Analyzer" auf ein Mapping angewendet werden. Standardmäßig wird der "Standard" Analyzer verwendet. Wenn Sie keinen Analysator verwenden möchten (da die Tokenisierung oder Normalisierung nicht sinnvoll wäre), können Sie alternativ "index" angeben: "not_analyzed".

PUT my_index 
{
  "mappings": {
    "user": {
      "properties": {
        "name": {
          "type": "string"
          "analyzer":  "my_user_name_analyzer"
        },
        "id": {
          "type": "string",
          "index": "not_analyzed"
        }
      }
    }
  }
}

Multi-Felder

Manchmal kann es nützlich sein, mehrere verschiedene Indizes eines Feldes mit unterschiedlichen Analysatoren zu haben. Sie können dazu die Mehrfeldfunktion verwenden.

PUT my_index 
{
  "mappings": {
    "user": {
      "properties": {
        "name": {
          "type": "string"
          "analyzer": "standard",
          "fields": {
            "special": {
               "type": "string",
               "analyzer": "my_user_name_analyzer"
            },
            "unanalyzed": {
              "type": "string",
              "index": "not_analyzed"
            }
          }
        }
      }
    }
  }
}

Bei der Abfrage können Sie anstelle von "user.name" (das in diesem Fall noch den Standard Analyzer verwenden würde) einfach "user.name.special" oder "user.name.unanalyzed" verwenden. Beachten Sie, dass das Dokument unverändert bleibt. Dies wirkt sich nur auf die Indizierung aus.

Analysatoren

Die Analyse in Elasticsearch kommt in einen Kontext, wenn Sie die Daten in Ihrem Index analysieren möchten.

Mit Analysatoren können wir Folgendes ausführen:

  • Abkürzungen
  • Stemming
  • Tippfehler

Wir werden uns jetzt alle ansehen.

  1. Abkürzungen :

    Mithilfe von Analysatoren können wir elasticsearch sagen, wie Abkürzungen in unseren Daten behandelt werden sollen, z.

  1. Stemming :

    Die Verwendung von "stemming" in Analysatoren ermöglicht es uns, Basiswörter für geänderte Verben wie zu verwenden

    Wort Änderungen
    benötigen Voraussetzung, erforderlich
  1. Typo Handling :

    Analysatoren bieten auch Tippfehler an, da bei der Abfrage, ob nach einem bestimmten Wort gesucht wird, sagen wir "Wiederauferstehung". Dann gibt elasticsearch die Ergebnisse zurück, bei denen Tippfehler vorhanden sind. Tippfehler behandeln Tippfehler wie Wiederauferstehung, Wiederbelebung als gleich und führen das Ergebnis erneut aus.

    Wort Änderungen
    Auferstehung Wiederauferstehung, Wiederauferstehung

Analysatoren in der Elasticsearch

  1. Standard

  2. Einfach

  3. Whitespace

  4. Halt

  5. Stichwort

  6. Muster

  7. Sprache

  8. Schneeball

Case Analyzer ignorieren

Manchmal müssen wir den Fall unserer Abfrage in Bezug auf die Übereinstimmung im Dokument ignorieren. In diesem Fall kann ein Analysator verwendet werden, um den Fall während der Suche zu ignorieren. Jedes Feld muss dieses Analysegerät in seiner Eigenschaft enthalten, damit es funktionieren kann:

"settings": {
        "analysis": {
            "analyzer": {
                "case_insensitive": {
               "tokenizer": "keyword",
               "filter": ["lowercase"]
            }
            }
        }
    }


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow