Что такое Elasticsearch и стек ELK
Знакомимся с Elasticsearch и его экосистемой — стеком ELK, который собирает, хранит, ищет и визуализирует данные.
Elasticsearch — распределённый поисковый и аналитический движок, который хранит документы в формате JSON и ищет по ним почти мгновенно благодаря инвертированному индексу.
Что это за зверь
Elasticsearch (часто сокращают до ES) — это сервер, который вы наполняете документами и спрашиваете по HTTP. Он построен на библиотеке Apache Lucene и добавляет к ней удобный REST API, распределённость (данные раскладываются по нескольким машинам) и отказоустойчивость. Главные качества: быстрый поиск по тексту с релевантностью, аналитика (агрегации поверх миллионов документов) и горизонтальное масштабирование — добавил серверов, выдержал больше нагрузки.
Зачем понадобился стек ELK
Сам по себе ES — это хранилище и поиск. Но данные нужно куда-то собрать, как-то загрузить и красиво показать. Для этого Elastic собрала набор инструментов, который раньше называли ELK, а теперь — Elastic Stack:
| Компонент | Роль |
| Elasticsearch | хранит документы и ищет по ним; сердце системы |
| Logstash | конвейер: принимает данные из разных источников, парсит, преобразует и грузит в ES |
| Kibana | веб-интерфейс: дашборды, графики, исследование данных, выполнение запросов |
| Beats | лёгкие агенты на серверах, которые отправляют логи и метрики (Filebeat, Metricbeat) |
Как данные текут через стек
Типичный путь данных — например, при сборе логов:
серверы конвейер хранилище интерфейс +---------+ +----------+ +-------------+ +--------+ | Beats | -----> | Logstash | ----> | Elasticsearch| ->| Kibana | | (логи) | | (парсинг)| | (индекс) | |(графики)| +---------+ +----------+ +-------------+ +--------+
Beats на каждом сервере читают файлы логов и шлют строки. Logstash их разбирает (например, вытаскивает дату, уровень, сообщение), приводит к нужному виду и кладёт в Elasticsearch. Kibana подключается к ES и рисует дашборды: сколько ошибок в час, по каким сервисам, где всплеск.
Как работает под капотом
Elasticsearch общается по HTTP и говорит на JSON. Вы шлёте запрос POST или GET с телом-JSON — получаете ответ-JSON. Никакого собственного бинарного протокола или драйвера учить не нужно: подойдёт curl, любой HTTP-клиент или Kibana. Внутри ES каждый узел (node) хранит часть данных, узлы объединяются в кластер и автоматически договариваются, кто за что отвечает. Поэтому одно и то же API работает и на ноутбуке с одним узлом, и на проде из тридцати машин.
Частые ошибки
- Считать ELK единым продуктом. Это четыре отдельных компонента; для простого поиска по сайту часто хватает только Elasticsearch, без Logstash и Beats.
- Тащить Logstash там, где он не нужен. Если данные уже в нужном формате, их можно грузить в ES напрямую через API, минуя тяжёлый Logstash.
Итоги
- Elasticsearch — распределённый поисковый и аналитический движок на базе Lucene с REST/JSON API.
- Стек ELK = Elasticsearch + Logstash (сбор/обработка) + Kibana (визуализация) + Beats (агенты).
- Главные сценарии: поиск по тексту, аналитика логов, дашборды в реальном времени.