КатегорииElasticsearch

Elasticsearch — Урок 4.3 Конкуренция при обновлении

Ранее мы обсуждали, что операция обновления должна сначала получить старый документ, применить изменения и переиндексировать документ. Если в процессе извлечения и изменения данных, кто-то еще изменить их, данные изменения будут утеряны и заменены вашими. Чтобы решить эту проблему, Elasticsearch увеличивает версию документа для каждой операции.

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

КатегорииElasticsearch

Elasticsearch — Урок 4.2 Обновление данных

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

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

КатегорииElasticsearch

Elasticsearch — Урок 4.1 Индексирование данных

Давайте для примера проиндексируем документ ниже:

PUT example4/person/1
{
   "id": 1,
   "name": "user1",
   "age": "55",
   "gender": "M",
   "email": "user1@gmail.com",
   "last_modified_date": "2017-02-15"
}

Документ, который мы только что проиндексировали, уникально идентифицируется индексом (example4), типом (person) и идентификатором (1). Вы можете указать свой идентификатор, как в данном случае или позволить Elasticsearch выбрать его для вас. Если вы хотите указать идентификатор, вы должны использовать PUTметод. Если вы используете POST, документу автоматически присваивается уникальный идентификатор. Ответ на предыдущую команду:

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

КатегорииElasticsearch

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

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

Категории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 поддерживает два типа данных для хранения местоположения:

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