Открыть сервис

Elasticsearch

Elasticsearch — это распределённая поисковая и аналитическая система с открытым исходным кодом, построенная на основе библиотеки Apache Lucene. Предназначена для полнотекстового поиска, сбора и анализа больших объёмов структурированных и неструктурированных данных в реальном времени. Относится к классу NoSQL-хранилищ документов и широко применяется в логистике, мониторинге, корпоративном поиске и системах бизнес-аналитики.

История

Разработка Elasticsearch началась в 2010 году Шэем Бэноном (Shay Banon) как проект по созданию поискового движка для его жены, работавшей с кулинарными рецептами. Первая публичная версия (0.4) была выпущена в феврале 2010 года. В 2012 году была основана компания Elasticsearch B.V. (ныне Elastic N.V.), которая взяла на себя основную разработку и коммерческую поддержку продукта.

Ключевые вехи развития:

В 2021 году компания Elastic изменила лицензию с Apache 2.0 на собственную лицензию Elastic License, что привело к созданию форка OpenSearch под управлением AWS.

Архитектура и основные концепции

Кластер и узлы

Elasticsearch работает в кластерной конфигурации. Кластер — это объединение одного или нескольких узлов (серверов), которые совместно хранят данные и выполняют поисковые запросы. Каждый кластер имеет уникальное имя. Узел — это отдельный экземпляр Elasticsearch, запущенный на сервере. Узлы могут выполнять разные роли:

Индексы и документы

Данные в Elasticsearch организованы в виде индексов. Индекс — это логическая коллекция документов, аналогичная таблице в реляционных базах данных. Документ — это базовая единица информации, представленная в формате JSON. Каждый документ имеет уникальный идентификатор (ID).

Шардирование и репликация

Для масштабирования и отказоустойчивости каждый индекс разделяется на шарды (shards) — части данных, распределённые по разным узлам. Первичный шард (primary shard) хранит оригинальные данные. Реплики (replica shards) — копии первичных шардов, которые обеспечивают отказоустойчивость и повышают производительность чтения. Количество первичных шардов задаётся при создании индекса и не может быть изменено без перестроения.

Инвертированный индекс

Основой поиска в Elasticsearch является инвертированный индекс — структура данных, которая для каждого уникального слова (терма) хранит список документов, в которых оно встречается. Это позволяет выполнять полнотекстовый поиск за константное время, независимо от объёма данных.

Ключевые возможности

Полнотекстовый поиск

Elasticsearch поддерживает широкий спектр поисковых операций: точное совпадение, нечёткий поиск (fuzzy search), поиск по фразам, поиск с учётом синонимов, поиск по регулярным выражениям. Для русского языка доступны анализаторы, учитывающие морфологию (стемминг, лемматизация).

Аналитика и агрегации

Система предоставляет мощный механизм агрегаций (aggregations) для анализа данных: группировка, подсчёт сумм, средних значений, процентилей, гистограммы, географические агрегации. Это позволяет строить дашборды и отчёты в реальном времени.

Геопространственный поиск

Elasticsearch поддерживает работу с географическими данными: поиск точек в радиусе, в полигоне, сортировка по расстоянию. Используется в логистике, картографических сервисах, приложениях доставки.

Автоматическое завершение и исправление

Встроенные функции suggesters позволяют реализовать автодополнение (completion suggester), исправление опечаток (phrase suggester), поиск похожих слов (term suggester).

Мониторинг и логирование

Elasticsearch является ключевым компонентом стека ELK (Elasticsearch, Logstash, Kibana) — популярного решения для централизованного сбора, хранения и анализа логов. Logstash отвечает за сбор и преобразование данных, Kibana — за визуализацию и построение дашбордов.

Применение

Корпоративный поиск

Elasticsearch используется для создания внутренних поисковых систем на сайтах и в приложениях: поиск по документам, товарам, пользователям. Примеры: поиск на сайтах электронной коммерции (Wildberries, Ozon), поиск по базе знаний.

Мониторинг IT-инфраструктуры

Совместно с Logstash и Kibana (стек ELK) Elasticsearch применяется для сбора и анализа логов серверов, приложений, сетевых устройств. Позволяет выявлять ошибки, аномалии, строить графики нагрузки.

Бизнес-аналитика

Агрегации Elasticsearch используются для построения аналитических отчётов: анализ продаж, поведения пользователей, финансовых показателей. Данные могут поступать в реальном времени.

Безопасность и обнаружение угроз

В системах SIEM (Security Information and Event Management) Elasticsearch используется для хранения и анализа событий безопасности, выявления подозрительной активности.

Преимущества и недостатки

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

Недостатки

Сравнение с альтернативами

ХарактеристикаElasticsearchApache SolrOpenSearchMeilisearch
ЛицензияElastic License (с 2021)Apache 2.0Apache 2.0MIT
Основной протоколRESTful APIRESTful APIRESTful APIRESTful API
Поддержка русского языкаДа (морфология)Да (морфология)Да (морфология)Ограниченно
МасштабированиеГоризонтальноеГоризонтальноеГоризонтальноеГоризонтальное
АгрегацииМощныеМощныеМощныеБазовые
Простота настройкиСредняяСредняяСредняяВысокая

Интересные факты

Критика

Основные критические замечания в адрес Elasticsearch связаны с изменением лицензии в 2021 году, что ограничило использование продукта в облачных сервисах конкурентов. В ответ AWS создала форк OpenSearch, который сохранил открытую лицензию Apache 2.0. Также отмечается сложность настройки производительности для больших кластеров и высокое потребление ресурсов.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →