Ingest Pipeline
Тема дорожной карты · Elasticsearch
Ingest-конвейер в Elasticsearch — это серверный механизм обогащения и преобразования данных, обрабатывающий документы перед их сохранением в индексе и позволяющий разбирать, обогащать и реструктурировать данные без внешних инструментов вроде Logstash. Каждый ingest-конвейер определяется как упорядоченный массив процессоров (Grok, Set, Rename, Date, GeoIP и других) и сохраняется в Elasticsearch через PUT /_ingest/pipeline/<pipeline_id>; конвейер затем указывается во время индексирования через параметр запроса pipeline или задаётся как конвейер по умолчанию в настройках индекса. Ingest-конвейер выполняется на выделенном узле приёма (или любом узле с ролью ingest) до маршрутизации документа в целевой шард, поэтому обработка конвейером не блокирует ресурсы узлов данных. Для проверки ingest-конвейера на тестовых документах без фактического индексирования данных используется POST /_ingest/pipeline/<pipeline_id>/_simulate — это незаменимо в процессе разработки. Ingest-конвейеры являются лёгкой альтернативой Logstash для простых рабочих процессов преобразования в рамках Elastic Stack, хотя Logstash по-прежнему предпочтителен для сложной маршрутизации с ветвлением или сценариев с постоянной очередью.
Как это работает
Ingest Pipeline: Elasticsearch может трансформировать документы при ingest через Ingest Pipelines — цепочки processors. Распространённые: grok (парсит unstructured text — syslog/nginx access logs), set/rename/remove/copy (манипуляция полями), geoip (enrich IPs), pipeline (compose). Быстрее Logstash для простых трансформ, работает на ES-нодах. Logstash добавляет heavier transforms + multiple outputs + queueing. Beats (Filebeat, Metricbeat) — lightweight shippers для log/metric collection.
Когда применять
Для простых трансформ (field renames, IP enrichment, log parsing) — Ingest Pipelines прямо в ES: меньше moving parts. Logstash для queueing, multiple outputs, сложного enrichment, или где ES-ноды не должны handle ingest CPU. Filebeat — дефолтный log shipper. Тестируйте pipelines через _simulate API до деплоя.
Типичные ошибки
Ловушки Ingest Pipeline: pipelines на dedicated data ноды (CPU contention с queries — dedicated ingest ноды); grok patterns не match (тихие failures); нет failure handlers (pipeline errors глотают данные); не версионируют pipelines (изменение ломает всех consumers).