Elasticsearch
Analysatoren
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.
Abkürzungen :
Mithilfe von Analysatoren können wir elasticsearch sagen, wie Abkürzungen in unseren Daten behandelt werden sollen, z.
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
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
Standard
Einfach
Whitespace
Halt
Stichwort
Muster
Sprache
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"]
}
}
}
}