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

Анализ Elasticsearch

Во время обработки запроса в процессе поиска модуль анализа анализирует содержимое любого индекса. Этот модуль состоит из анализатора, генератора токенов, фильтра токенов и фильтра символов. Если анализатор не определен, по умолчанию в модуле анализа регистрируются встроенный анализатор, токены, фильтры и генератор токенов.

В следующем примере мы используем стандартный анализатор, который используется по умолчанию при отсутствии других анализаторов. Он анализирует предложение по грамматике и создает слова, используемые в предложении.

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

После выполнения上面的 кода мы получаем следующий ответ:

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

Настройка стандартного анализатора

Мы можем использовать различные параметры для настройки стандартного анализатора, чтобы удовлетворить наши пользовательские требования.

В следующем примере мы настроим стандартный анализатор на max_token_length равным 5.

Для этого мы сначала создаем индекс с параметром max_length_token.

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

Далее, мы используем следующий текст для применения анализатора. Обратите внимание, что маркеры не отображаются, так как в начале и в конце есть два пробела. Для " Слово "is" имеет пробелы в начале и конце, которые должны быть удалены, так как они становятся четырьмя пробельными символами, что не означает, что это слово. По крайней мере, в начале или конце должно быть некое символ, чтобы это стало словом, которое следует учитывать.

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

После выполнения上面的 кода мы получаем следующий ответ:

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

В таблице ниже приведен список различных анализаторов и их описание-

НомерАнализаторы и их описание
1

Стандартный анализатор(standard)

Параметры stopwords и max_token_length могут быть установлены для этого анализатора. По умолчанию, список stopwords пуст, max_token_length составляет 255.

2

Просто анализатор(simple)

Этот анализатор состоит из нижнего регистра токенизатора.

3

Пространственно-анализатор (whitespace)

Этот анализатор состоит из маркеров пробелов

4

Остановить анализатор (stop)

Можете настроить stopwords и stopwords_path. По умолчанию stopwords инициализируются английскими стоп-словами, а stopwords_path содержит путь к текстовому файлу с стоп-словами

Морфологический анализатор

Генератор токенов используется для генерации токенов из текста Elasticsearch. Добавляя в рассмотрение пробелы или другие знаки препинания, текст можно разложить на маркеры. Elasticsearch имеет множество встроенных маркеров, которые можно использовать в пользовательских анализаторах.

Ниже показан пример морфологического анализатора, который при встрече с несимвольными символами разлагает текст на несколько слов, но также делает все слова строчными, как показано ниже-

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

После выполнения上面的 кода мы получаем следующий ответ:

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

Список генераторов токенов и их описание приведены в таблице ниже:

НомерТокенизатор и описание
1

Маркер стандартного (standard)

Это основано на языковой маркере, max_token_length может быть настроено для этого маркера.

2

Маркер NGram края(edgeNGram)

Такие настройки, как min_gram, max_gram, token_chars, могут быть установлены для этого маркера.

3

Маркер ключевых слов (keyword)

Это генерирует весь ввод в качестве вывода, buffer_size может быть установлено для этой маркера.

4

Маркер письма (letter)

Это捕获整个单词, до встречи с одним из немых.