КатегорииElasticsearch

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

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

hash(document_id) % no_of_shards

Продолжить чтение

КатегорииElasticsearch

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

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

Продолжить чтение

КатегорииElasticsearch

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

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

{
   "properties": {
     "title_text": {
       "type": "text"
     },
     "title_keyword": {
       "type": "keyword"
     }
   }
}

Продолжить чтение

КатегорииElasticsearch

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

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

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

Продолжить чтение

КатегорииElasticsearch

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

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

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

Продолжить чтение

КатегорииElasticsearch

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

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

{
   "date": "2017/02/01",
   "desc": "В Москве все выходные будут дожди"
 }

Продолжить чтение

КатегорииElasticsearch

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

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

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

Продолжить чтение