Elasticsearch - Analyse

Wenn eine Abfrage während eines Suchvorgangs verarbeitet wird, wird der Inhalt eines beliebigen Index vom Analysemodul analysiert. Dieses Modul besteht aus Analysator, Tokenizer, Tokenfiltern und Zeichenfiltern. Wenn kein Analysator definiert ist, werden standardmäßig die integrierten Analysatoren, Token, Filter und Tokenizer beim Analysemodul registriert.

Im folgenden Beispiel verwenden wir einen Standardanalysator, der verwendet wird, wenn kein anderer Analysator angegeben ist. Es analysiert den Satz anhand der Grammatik und erzeugt die im Satz verwendeten Wörter.

POST _analyze
{
   "analyzer": "standard",
   "text": "Today's weather is beautiful"
}

Beim Ausführen des obigen Codes erhalten wir die Antwort wie unten gezeigt -

{
   "tokens" : [
      {
         "token" : "today's",
         "start_offset" : 0,
         "end_offset" : 7,
         "type" : "",
         "position" : 0
      },
      {
         "token" : "weather",
         "start_offset" : 8,
         "end_offset" : 15,
         "type" : "",
         "position" : 1
      },
      {
         "token" : "is",
         "start_offset" : 16,
         "end_offset" : 18,
         "type" : "",
         "position" : 2
      },
      {
         "token" : "beautiful",
         "start_offset" : 19,
         "end_offset" : 28,
         "type" : "",
         "position" : 3
      }
   ]
}

Konfigurieren des Standardanalysators

Wir können den Standardanalysator mit verschiedenen Parametern konfigurieren, um unsere benutzerdefinierten Anforderungen zu erfüllen.

Im folgenden Beispiel konfigurieren wir den Standardanalysator so, dass er eine max_token_length von 5 hat.

Dazu erstellen wir zunächst einen Index mit dem Analysator mit dem Parameter max_length_token.

PUT index_4_analysis
{
   "settings": {
      "analysis": {
         "analyzer": {
            "my_english_analyzer": {
               "type": "standard",
               "max_token_length": 5,
               "stopwords": "_english_"
            }
         }
      }
   }
}

Als nächstes wenden wir den Analysator mit einem Text an, wie unten gezeigt. Bitte beachten Sie, dass das Token nicht angezeigt wird, da es am Anfang zwei Leerzeichen und am Ende zwei Leerzeichen enthält. Für das Wort "ist" gibt es ein Leerzeichen am Anfang und ein Leerzeichen am Ende. Wenn man sie alle nimmt, werden es 4 Buchstaben mit Leerzeichen und das macht es nicht zu einem Wort. Zumindest am Anfang oder am Ende sollte ein Leerzeichen stehen, damit es zu einem zu zählenden Wort wird.

POST index_4_analysis/_analyze
{
   "analyzer": "my_english_analyzer",
   "text": "Today's weather is beautiful"
}

Beim Ausführen des obigen Codes erhalten wir die Antwort wie unten gezeigt -

{
   "tokens" : [
      {
         "token" : "today",
         "start_offset" : 0,
         "end_offset" : 5,
         "type" : "",
         "position" : 0
      },
      {
         "token" : "s",
         "start_offset" : 6,
         "end_offset" : 7,
         "type" : "",
         "position" : 1
      },
      {
         "token" : "weath",
         "start_offset" : 8,
         "end_offset" : 13,
         "type" : "",
         "position" : 2
      },
      {
         "token" : "er",
         "start_offset" : 13,
         "end_offset" : 15,
         "type" : "",
         "position" : 3
      },
      {
         "token" : "beaut",
         "start_offset" : 19,
         "end_offset" : 24,
         "type" : "",
         "position" : 5
      },
      {
         "token" : "iful",
         "start_offset" : 24,
         "end_offset" : 28,
         "type" : "",
         "position" : 6
      }
   ]
}

Die Liste der verschiedenen Analysegeräte und ihre Beschreibung sind in der folgenden Tabelle aufgeführt.

S.No. Analysator & Beschreibung
1

Standard analyzer (standard)

Für diesen Analysator können Stoppwörter und die Einstellung max_token_length festgelegt werden. Standardmäßig ist die Stoppwortliste leer und max_token_length ist 255.

2

Simple analyzer (simple)

Dieser Analysator besteht aus einem Tokenizer in Kleinbuchstaben.

3

Whitespace analyzer (whitespace)

Dieser Analysator besteht aus einem Whitespace-Tokenizer.

4

Stop analyzer (stop)

stopwords und stopwords_path können konfiguriert werden. Standardmäßig werden Stoppwörter mit englischen Stoppwörtern initialisiert und stopwords_path enthält den Pfad zu einer Textdatei mit Stoppwörtern.

Tokenizer

Tokenizer werden zum Generieren von Token aus einem Text in Elasticsearch verwendet. Text kann unter Berücksichtigung von Leerzeichen oder anderen Satzzeichen in Token zerlegt werden. Elasticsearch verfügt über zahlreiche integrierte Tokenizer, die in benutzerdefinierten Analysegeräten verwendet werden können.

Ein Beispiel für einen Tokenizer, der Text in Begriffe zerlegt, wenn er auf ein Zeichen trifft, das kein Buchstabe ist, aber auch alle Begriffe in Kleinbuchstaben schreibt, ist unten dargestellt.

POST _analyze
{
   "tokenizer": "lowercase",
   "text": "It Was a Beautiful Weather 5 Days ago."
}

Beim Ausführen des obigen Codes erhalten wir die Antwort wie unten gezeigt -

{
   "tokens" : [
      {
         "token" : "it",
         "start_offset" : 0,
         "end_offset" : 2,
         "type" : "word",
         "position" : 0
      },
      {
         "token" : "was",
         "start_offset" : 3,
         "end_offset" : 6,
         "type" : "word",
         "position" : 1
      },
      {
         "token" : "a",
         "start_offset" : 7,
         "end_offset" : 8,
         "type" : "word",
         "position" : 2
      },
      {
         "token" : "beautiful",
         "start_offset" : 9,
         "end_offset" : 18,
         "type" : "word",
         "position" : 3
      },
      {
         "token" : "weather",
         "start_offset" : 19,
         "end_offset" : 26,
         "type" : "word",
         "position" : 4
      },
      {
         "token" : "days",
         "start_offset" : 29,
         "end_offset" : 33,
         "type" : "word",
         "position" : 5
      },
      {
         "token" : "ago",
         "start_offset" : 34,
         "end_offset" : 37,
         "type" : "word",
         "position" : 6
      }
   ]
}

Eine Liste der Tokenizer und ihrer Beschreibungen finden Sie hier in der folgenden Tabelle -

S.No. Tokenizer & Beschreibung
1

Standard tokenizer (standard)

Dies basiert auf einem grammatikalischen Tokenizer und max_token_length kann für diesen Tokenizer konfiguriert werden.

2

Edge NGram tokenizer (edgeNGram)

Für diesen Tokenizer können Einstellungen wie min_gram, max_gram, token_chars festgelegt werden.

3

Keyword tokenizer (keyword)

Dies erzeugt die gesamte Eingabe als Ausgabe und dafür kann buffer_size eingestellt werden.

4

Letter tokenizer (letter)

Dies erfasst das gesamte Wort, bis ein Nicht-Buchstabe gefunden wird.