Перейти к основному содержимому

Elasticsearch: краткое описание и подборка материалов

Elasticsearch

Elasticsearch (ES) — это распределенный поисковой и аналитический движок, построенный на основе Apache Lucene. Предоставляет открытый и гибкий интерфейс для хранения, поиска и анализа данных в реальном времени. Условно говоря, ES — это документоориентированная NoSQL БД и гугл одновременно.

Elasticsearch является частью стека ELK (Elasticsearch, Logstash и Kibana).

  • Logstash собирает, обрабатывает и передает данные из различных источников в хранилище, такое как ES. Поддерживает различные источники данных и форматы логов.
  • Elasticsearch индексирует и анализирует собранные данные и производит поиск в них.
  • Kibana предназначена для работы с логами, поддерживает гибкий и сложный поиск по логам. Так же в Kibana можно строить дашборды, отчёты и визуализировать данные.
  • Beats — легковесные агенты для отправки логов в ES. Они более примитивны, чем Logstash, т.к. только собирают и отправляют данные, без преобразований.

Архитектура Elasticsearch

Elasticsearch распределенная:

  1. Данные хранятся в виде JSON-документов.
  2. Эти документы индексируются для быстрого поиска.
  3. Каждый индекс разбивается на шарды для распределения их по узлам кластера, что позволяет балансировать нагрузку. Кластер состоит из одного или нескольких узлов, объединенных в единое целое для совместной работы.

Как работает ES?

  1. Данные отправляются в ES в виде документов JSON с помощью API или инструментов приема, например, Logstash.
  2. ES автоматически сохраняет исходный документ и добавляет ссылку на него в индекс кластера, включая возможность поиска.
  3. Следом можно найти и извлечь документ, используя API Elasticsearch.
  4. Также для визуализации данных и создания интерактивных панелей управления можно задействовать Kibana.

Применение ES

  • Мониторинг и логирование. Хранение, поиск и анализ логов для отслеживания работы приложений, системы, серверов.
  • Аналитика и BI. Поиск, фильтрация, агрегация, анализ больших объемов данных в реальном времени для выявления паттернов, создания отчетов. Например, компании в финансовой сфере используют ES для анализа данных о транзакциях, инвестициях и рынке.
  • Поисковые системы. Используется для быстрого и точного поиска. Например, платформы соцсетей используют ES для быстрого поиска, фильтрации и сортировки контента. Или интернет-магазины для поиска товаров. Также у ES есть возможность поиска и анализа данных на основе геолокации.

Преимущества ES

  • Быстрый поиск и агрегация данных. Обеспечивает мгновенный доступ к данным и эффективный поиск за счет распределенной архитектуры, индексации и возможности добавлять новые узлы в кластер.
  • Отказоустойчивость. Достигается благодаря распределению данных и запросов между различными узлами кластера и шардами. В случае проблем ES автоматически восстанавливает реплики и данные.
  • Масштабируемость и гибкость. ES можно масштабировать горизонтально без потери производительности. Кластеры ES могут расширяться и сжиматься в зависимости от потребностей с помощью добавления новых узлов.
  • Экосистема ELK. Входит в стек ELK, предоставляя комплексное решение для обработки, хранения и визуализации данных.

Недостатки ES

  • Сложность конфигурации. Настройка и управление ES может быть сложным для новичков, т.к. содержит множество параметров и настроек.
  • Управление ресурсами. Управление памятью, диском и другими ресурсами может быть сложным из-за использования обратных индексов. Неоптимальная конфигурация может привести к недостаточной производительности.

Подборка полезных материалов по Elasticsearch

📄 Статьи

  1. Простыми словами про ES от Яндекса
  2. Про Elasticsearch от Amazon
  3. Подробнее про архитектуру ES
  4. Основы работы с ES
  5. О ELK простыми словами
  6. Про стек ELK, преимущества и недостатки
  7. Подробнее про стек ELK
  8. Наш пост про Kibana и Graphana
  9. Как установить и настроить ELK
  10. Цикл статей по ELK

✏️ Кейсы

  1. Как Тинькофф делали речевую аналитику с ElasticSearch
  2. Как работает поиск в Озоне
  3. Распределенное логирование и трассировка для микросервисов
  4. Как в ЦИАН укрощали терабайты логов
  5. Проблемы с Кросс-кластерным поиском в Elasticsearch
  6. 7 петабайт логов в Elastic

Альтернативы Elasticsearch

  1. Manticore — альтернатива Эластику на C++ с 21-летней историей
  2. Clickhouse в качестве замены ELK, Big Query и TimescaleDB

⏯ Видео и вебинары

  1. Цикл коротких видео про ES
  2. Что такое ELK за 10 минут
  3. Вебинар по Kibana
  4. [Elasticsearch] Все об индексах и шардах (index & shard)

⏯ Видео (кейсы из конференций)

  1. ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)
  2. Гибкий поиск данных в проекте с ElasticSearch. Николай Кондусов
  3. Кластер Elasticsearch на 200 Тб+ / Петр Зайцев (Одноклассники)
  4. Elasticsearch который нужен позавчера / Даниил Смирнов (Тинькофф)