КатегорииElasticsearch

Elasticsearch — Урок 5.5 Shrink API

Shrink API используется для сжатия существующего индекса в новый индекс с меньшим количеством осколков. Если данные в индексе больше не изменяются, индекс может быть оптимизирован в плане используемых вычислительных ресурсов при поиске и агрегации за счет уменьшения количества осколков. Количество осколков в индексе назначения должно быть фактором исходного индекса. Например, индекс с 6 первичными осколками может быть сжат в 3, 2 или 1 осколок. При работе с чувствительными к времени данными, такими как журналы, данные индексируются только в текущие индексы, а старые индексы в основном читаются. API-интерфейс Shrink не переиндексирует документ; он просто переводит индексные сегменты в новый индекс.

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

КатегорииElasticsearch

Elasticsearch — Урок 5.4 Организация данных

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

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

Категории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 Обновление данных

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

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