Elasticsearch: Введение в маппинг

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

Elasticsearch

Типы данных полей

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

Мета-поля

Каждый тип отображения содержит ряд мета-полей для различных целей, некоторые из которых можно настраивать. Каждый документ имеет эти мета-поля, связанные с ним, помимо объекта JSON, который был добавлен в индекс. Примерами таких мета-полей являются _id, _type, _uid и _index.

Динамическое отображение

Сопоставление не обязательно должно быть определено в явном виде перед добавлением документов определенного типа в индекс. Фактически, динамическое отображение относится к автоматическому обнаружению и добавлению новых типов и полей. Это означает, что вы можете добавить документ без предварительного определения типа и полей отображения. Можно даже добавить документ без предварительного создания индекса! В этом случае Elasticsearch позаботится о создании индекса, типа отображения и полей. Это будет сделано автоматически, и Elasticsearch определит типы данных на основе данных документа.

Явное отображение

Явное отображение означает явное добавление информации об отображении вместо того, чтобы позволить Elasticsearch вывести ее на основе добавленных документов. Это может быть сделано при создании индекса, но также может быть сделано путем отправки PUT-запроса к существующему индексу. Явное отображение полезно, если у вас есть определенные требования к данным типа отображения, например, форматы дат. Оно также может быть полезно, если Elasticsearch не может вывести правильную информацию о сопоставлении на основе добавленных документов. Хотя динамическое отображение очень удобно, особенно в начале работы с Elasticsearch, может быть хорошей идеей определить явное отображение, поскольку оно описывает данные и требования к этим данным.

Недостатки отображения

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

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий