Elasticsearch — Урок 3 Моделирование

Elasticsearch может автоматически определит схему документов, так сказать на лету. Но для практических целей лучше рассказать Elasticsearch про свои данные поподробнее, чтобы избежать каких-либо неожиданностей, обычно этот рассказ называется маппингом (создание схемы данных). Моделирование ваших данных является одним из наиболее важных шагов перед использованием Elasticsearch. Вы узнаете, как моделировать свои данные и настраивать отношения между разными типами документов. В этом уроке мы рассмотрим следующее:

Elasticsearch — Урок 3.9 Маршрутизация или в поисках шарда

Ранее мы обсуждали, что индекс может состоять из одного или нескольких осколков (shards). Во время индексации идентификатор документа используется для определения того, к какому осколку отнести документ, используя следующую формулу:

Читать далее Elasticsearch — Урок 3.9 Маршрутизация или в поисках шарда

Elasticsearch — Урок 3.8 Отношения между документами

В реляционном мире данные часто делятся на несколько таблиц и связаны с использованием внешних ключей. Но в мире NoSQL данные обычно денормализуются и хранятся как один большой документ. Однако часто бывает целесообразно все же разделить эти данные. Данные в Elasticsearch неизменяемы. Обновление существующего документа означает получение старого документа, изменение и повторную индексацию его в качестве нового документа. Обновление — дорогостоящая операция. Нужно стремиться свести обновления до минимума.

Читать далее Elasticsearch — Урок 3.8 Отношения между документами

Elasticsearch — Урок 3.7 Маппинг одного и того же поля с разными типами данных

Иногда появляется потребность поддерживать разные запросы для одного и того же поля. Например у нас есть поле заголовка title и мы хотим делать как полнотекстовые запросы так и запросы на точное соответствие. Первое что приходит на ум, это создать два поля и указать им разные типы данных, например:

Читать далее Elasticsearch — Урок 3.7 Маппинг одного и того же поля с разными типами данных

Elasticsearch — Урок 3.6 Специализированные типы данных

Elasticsearch поддерживает следующие специализированные типы данных:

  • IP : используется для хранения IP-адреса
  • Completion: используется для поддержки функции автозаполнения
  • Percolator: используется для поддержки обратного поиска

Читать далее Elasticsearch — Урок 3.6 Специализированные типы данных

Elasticsearch — Урок 3.5 Тип геоданные

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

Elasticsearch поддерживает два типа данных для хранения местоположения:

Читать далее Elasticsearch — Урок 3.5 Тип геоданные

Elasticsearch — Урок 3.4 Сложные типы данных

В предыдущем уроке мы говорили о простых типах данных. В этом уроке мы поговорим о том, как установить схему для массивов, объектов и вложенных объектов.

Читать далее Elasticsearch — Урок 3.4 Сложные типы данных

Elasticsearch — Урок 3.2 Разница между полнотекстовым поиском и точным соответствием

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

Читать далее Elasticsearch — Урок 3.2 Разница между полнотекстовым поиском и точным соответствием

Elasticsearch — Урок 3.1 Mapping: схема документов

Маппинг (сопоставление) — это процесс определения схемы или структуры документов. Он описывает свойства полей в документе. Свойства поля включают тип данных (например, string, integer и т.д.) и метаданные.

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

Читать далее Elasticsearch — Урок 3.1 Mapping: схема документов