English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Elasticsearch Analyse

Während der Verarbeitung der Abfrage während des Suchvorgangs analysiert das Analysemodule den Inhalt jeder Index. Das Modul besteht aus dem Analyzer, Token-Generator, Token-Filter und Zeichen-Filter. Wenn kein Analyzer definiert ist, werden standardmäßig der eingebaute Analyzer, Token, Filter und Token-Generator im Analysemodule registriert.

Im folgenden Beispiel verwenden wir einen Standardanalyzer, der standardmäßig verwendet wird, wenn kein anderer Analyzer angegeben ist. Er analysiert den Satz nach Grammatik und generiert die Wörter, die im Satz verwendet werden.

POST _analyze
{
   "analyzer": "standard",
   "text": "Heute ist das Wetter schön"
{}

Nach der Ausführung des obigen Codes erhalten wir die folgende Antwort:

{
   "tokens": [
      {
         "token" : "heute'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
      {}
   ]
{}

Konfiguration des Standardanalyzers

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

Im folgenden Beispiel wird der Standardanalyzer so konfiguriert, dass max_token_length5。

Dazu verwenden wir zunächst einen Analyzer mit dem Parameter max_length_token, um den Index zu erstellen.

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

Nachfolgend verwenden wir den Textanalyzer, wie gezeigt. Beachten Sie, dass der Token nicht angezeigt wird, da er am Anfang zwei Leerzeichen und am Ende zwei Leerzeichen hat. Für " Das Wort "is", das am Anfang einen Leerzeichen hat und am Ende ein Leerzeichen hat. Wenn man sie alle herausnimmt, wird es zu4Ein mit Leerzeichen getragener Buchstabe bedeutet nicht, dass es sich um ein Wort handelt. Es sollte mindestens ein nicht leeres Zeichen am Anfang oder am Ende geben, um es zu einem zu zählenden Wort zu machen.

POST index_4_analysis/_analyze
{
   "analyzer": "mein_english_analyzer",
   "text": "Heute ist das Wetter schön"
{}

Nach der Ausführung des obigen Codes erhalten wir die folgende Antwort:

{
   "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 folgende Tabelle listet eine Vielzahl von Analysern und deren Erklärungen auf-

NummerAnalyser und Erklärung
1

Standard-Analyzer(standard)

stopwords und max_token_length können für diesen Analyzer eingestellt werden. Standardmäßig ist die stopwords-Liste leer, und max_token_length ist255。

2

Einfacher Analyzer(simple)

Dieser Analyzer besteht aus kleinen Tokenizer.

3

Whitespace-Analyzer (whitespace)

Dieser Analyzer besteht aus Leerzeichen-Tokens.

4

Stop-Analyzer (stop)

können stopwords und stopwords_path konfiguriert werden. Standardmäßig werden stopwords auf Englisch initialisiert, und stopwords_path enthält den Pfad zur Textdatei, die die stopwords enthält

Tokenizer

Der Token-Generator wird verwendet, um aus dem Text in Elasticsearch Token zu generieren. Durch Berücksichtigung von Leerzeichen oder anderen Punctuationzeichen kann der Text in Tokens zerlegt werden. Elasticsearch verfügt über viele eingebauten Tokenizer, die in benutzerdefinierten Analysetools verwendet werden können.

Nachstehend wird ein Beispiel für einen Tokenizer gezeigt, der den Text bei Nicht-ASCII-Zeichen in mehrere Wörter zerlegt, aber alle Wörter in Kleinbuchstaben umwandelt, wie folgt:-

POST _analyze
{
   "tokenizer": "lowercase",
   "text": "Es war ein schönes Wetter" 5 Days ago."
{}

Nach der Ausführung des obigen Codes erhalten wir die folgende Antwort:

{
   "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
      {}
   ]
{}

Die Liste der Token-Generatoren und deren Beschreibungen sind in der folgenden Tabelle aufgeführt:

NummerTokenisierer und Erklärung
1

Standardmarker (standard)

Dieser Marker wird auf Basis eines grammatischen Markers aufgebaut, max_token_length kann für diesen Marker konfiguriert werden.

2

Rand NGram Marker(edgeNGram)

Einstellungen wie min_gram, max_gram, token_chars können für diesen Marker konfiguriert werden.

3

Schlüsselwortmarker (keyword)

Dies generiert den gesamten Eingang als Ausgang, buffer_size kann hierfür eingestellt werden.

4

Buchstabenmarker (letter)

Dies erfasst den gesamten Wort, bis auf einen nicht-alphabetischen Buchstaben.