Учебники

Elasticsearch — Анализ

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

POST http://localhost:9200/pictures

Тело запроса

{
   "settings": {
      "analysis": {
         "analyzer": {
            "index_analyzer": {
               "tokenizer": "standard", "filter": [
                  "standard", "my_delimiter", "lowercase", "stop", 
                     "asciifolding", "porter_stem"
               ]
            },
				
            "search_analyzer": {
               "tokenizer": "standard", "filter": [
                  "standard", "lowercase", "stop", "asciifolding", "porter_stem"
               ]
            }
         },
			
         "filter": {
            "my_delimiter": {
               "type": "word_delimiter",
               "generate_word_parts": true,
               "catenate_words": true,
               "catenate_numbers": true,
               "catenate_all": true,
               "split_on_case_change": true,
               "preserve_original": true,
               "split_on_numerics": true,
               "stem_english_possessive": true
            }
         }
      }
   }
}

Анализаторы

Анализатор состоит из токенизатора и дополнительных токен-фильтров. Эти анализаторы регистрируются в модуле анализа с логическими именами, на которые можно ссылаться либо в определениях отображения, либо в некоторых API. Есть ряд анализаторов по умолчанию следующим образом:

Sr.No Анализатор и описание
1

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

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

2

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

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

3

Анализатор пробелов (пробелы)

Этот анализатор состоит из пробел-токенизатор.

4

Стоп анализатор (стоп)

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

5

Анализатор ключевых слов (ключевое слово)

Этот анализатор токенизирует весь поток как один токен. Может использоваться для почтового индекса.

6

Анализатор паттернов (pattern)

Этот анализатор в основном работает с регулярными выражениями. В этом анализаторе можно установить такие параметры, как строчные буквы, шаблон, флаги, стоп-слова.

7

Анализатор языка

Этот анализатор имеет дело с такими языками, как хинди, арабский, ducth и т. Д.

8

Снежок анализатор (снежный ком)

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

9

Пользовательский анализатор (custom)

Этот анализатор используется для создания настраиваемого анализатора с токенизатором с дополнительными фильтрами токенов и фильтрами символов. В этом анализаторе можно настроить такие параметры, как токенизатор, фильтр, char_filter и position_increment_gap.

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

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

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

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

Анализатор пробелов (пробелы)

Этот анализатор состоит из пробел-токенизатор.

Стоп анализатор (стоп)

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

Анализатор ключевых слов (ключевое слово)

Этот анализатор токенизирует весь поток как один токен. Может использоваться для почтового индекса.

Анализатор паттернов (pattern)

Этот анализатор в основном работает с регулярными выражениями. В этом анализаторе можно установить такие параметры, как строчные буквы, шаблон, флаги, стоп-слова.

Анализатор языка

Этот анализатор имеет дело с такими языками, как хинди, арабский, ducth и т. Д.

Снежок анализатор (снежный ком)

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

Пользовательский анализатор (custom)

Этот анализатор используется для создания настраиваемого анализатора с токенизатором с дополнительными фильтрами токенов и фильтрами символов. В этом анализаторе можно настроить такие параметры, как токенизатор, фильтр, char_filter и position_increment_gap.

Tokenizers

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

Sr.No Токенайзер и описание
1

Стандартный токенизатор (стандартный)

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

2

Edge NGram токенизатор (edgeNGram)

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

3

Ключевое слово токенизатор (ключевое слово)

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

4

Письмо токенизатор (письмо)

Это захватывает все слово, пока не встретится не буква.

5

Строчный токенизатор (строчные)

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

6

NGram Tokenizer (нГрам)

Для этого токенизатора можно установить такие параметры, как min_gram (значение по умолчанию — 1), max_gram (значение по умолчанию — 2) и token_chars.

7

Токенайзер пробелов (пробелы)

Это делит текст на основе пробелов.

8

Шаблонный токенизатор (шаблон)

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

9

Токенайзер URL-адреса электронной почты UAX (uax_url_email)

Это работает так же, как стандартный токенизатор, но обрабатывает электронную почту и URL как один токен.

10

Токенайзер иерархии путей (path_hierarchy)

Этот токенизатор сгенерировал все возможные пути, присутствующие во входном пути каталога. Настройки, доступные для этого токенизатора: разделитель (по умолчанию /), замена, buffer_size (по умолчанию 1024), обратный (по умолчанию false) и пропуск (по умолчанию 0).

11

Классический токенизатор (classic)

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

12

Тайский токенизатор (тайский)

Этот токенизатор используется для тайского языка и использует встроенный тайский алгоритм сегментации.

Стандартный токенизатор (стандартный)

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

Edge NGram токенизатор (edgeNGram)

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

Ключевое слово токенизатор (ключевое слово)

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

Письмо токенизатор (письмо)

Это захватывает все слово, пока не встретится не буква.

Строчный токенизатор (строчные)

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

NGram Tokenizer (нГрам)

Для этого токенизатора можно установить такие параметры, как min_gram (значение по умолчанию — 1), max_gram (значение по умолчанию — 2) и token_chars.

Токенайзер пробелов (пробелы)

Это делит текст на основе пробелов.

Шаблонный токенизатор (шаблон)

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

Токенайзер URL-адреса электронной почты UAX (uax_url_email)

Это работает так же, как стандартный токенизатор, но обрабатывает электронную почту и URL как один токен.

Токенайзер иерархии путей (path_hierarchy)

Этот токенизатор сгенерировал все возможные пути, присутствующие во входном пути каталога. Настройки, доступные для этого токенизатора: разделитель (по умолчанию /), замена, buffer_size (по умолчанию 1024), обратный (по умолчанию false) и пропуск (по умолчанию 0).

Классический токенизатор (classic)

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

Тайский токенизатор (тайский)

Этот токенизатор используется для тайского языка и использует встроенный тайский алгоритм сегментации.

Фильтры токенов

Токен-фильтры получают входные данные от токенайзеров, и затем эти фильтры могут изменять, удалять или добавлять текст в этот вход. Elasticsearch предлагает множество встроенных токен-фильтров. Большинство из них уже были объяснены в предыдущих разделах.

Фильтры персонажей

Эти фильтры обрабатывают текст перед токенизаторами. Символьные фильтры ищут специальные символы или теги html или указанный шаблон, а затем либо удаляют, либо меняют их на подходящие слова, такие как ‘&’, и удаляют теги разметки html. Вот пример анализатора с синонимом, указанным в synonym.txt —