КатегорииElasticsearch

Elasticsearch — Урок 5.3 Ingest Node

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

В Elasticsearch 5.0 был введен узел ingest. Используя узел ingest, можно определить конвейеры для изменения документов до индексирования. Конвейер — это серия процессоров, каждый из которых работает с одним или несколькими полями в документе. Наиболее часто используемые фильтры Logstash доступны как обработчики. Например, используя grok фильтр для извлечения данных из файла журнала Apache в документ, извлечение полей из JSON, изменение формата даты, вычисление геоданных из местоположения и т. д. Возможности безграничны. Elasticsearch поддерживает множество обработчиков из коробки. Вы также можете разрабатывать свои собственные процессоры с использованием любых JVM-языков.

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

КатегорииElasticsearchУроки

Elasticsearch — Урок 5.2 Reindex API

До Elasticsearch 5.0, чтобы изменить параметры индекса или изменить отображение индекса, приходилось создавать новый индекс и переиндексировать данные. Переиндексация большого индекса, как правило не простая задача, которая включает в себя чтение данных из источника, таких как база данных SQL, преобразование данных в документы и загрузка в Elasticsearch. При очень больших объемах данных используют процессоры пакетной обработки, такие как Hadoop. В зависимости от того, насколько большой индекс или насколько сложным является процесс ETL (Extract, Transform, Load), reindex может быть очень дорогостоящим. Чтобы решить эту проблему, был введен Reindex API. Оригинальный документ JSON, используемый для индексирования, хранится в поле _source, которое можно использовать в Reindex API для переиндексации документов. 

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

КатегорииElasticsearch

Elasticsearch — Урок 5.1 Массовые операции

_bulk API

_bulk API идеально подходит для индексирования или удаления больших наборов данных. Поддерживаются операции создания, индексирования, обновления и удаления. Для каждого запроса должны быть предоставлены метаданные, такие как имя индекса, тип, уникальный идентификатор и маршрутизация. Каждый запрос разделяется новой строкой. Объемный запрос может быть смесью запросов создания, индексации, обновления и удаления. Узел, получающий массовый запрос (также известный как координационный узел), группирует запросы с по осколкам, к котором они принадлежат, и выполняет их параллельно (параллельная обработка зависит от количества cpu). Пулы потоков, которые выполняют одиночные и массовые запросы, независимы.

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

КатегорииElasticsearch

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

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

В этой уроке мы рассмотрим следующее:

КатегорииElasticsearch

Elasticsearch — Урок 4.5 Синхронизация между первичным осколком и репликой

Как вы знаете, данные в индексе разделены на один или несколько осколков. Разделив ваши данные на несколько осколков, Elasticsearch может масштабироваться за пределы того, что может сделать одна машина. Elasticsearch — это распределенная система, и системные сбои обязательно произойдут. Поскольку каждый осколок является независимым индексом Lucene, который может жить на любом узле кластера, Elasticsearch обеспечивает способ сохранения копии первичного осколка в другом узле кластера. Если узел, содержащий первичный осколок, терпит неудачу, то осколок реплики (копия), который существует в другом узле, продвигается до первичного.

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

КатегорииElasticsearch

Elasticsearch — Урок 4.4 Translog и зачем он нужен

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

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

Категории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": "[email protected]",
   "last_modified_date": "2017-02-15"
}

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

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

КатегорииElasticsearch

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

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