Включите исполнение JavaScript в браузере, чтобы запустить приложение.

Elasticsearch: что это такое и принципы работы архитектуры

8 сен 2024
Что такое Elasticsearch простыми словами для начинающих. Разберем, что такое Elasticsearch, принципы работы и основные сущности архитектуры. Преимущества и недостатки Elasticsearch, его аналоги и области применения архитектуры — читайте в блоге Gitverse.ru.

Введение в работу с Elasticsearch

Для поиска в big data применяется поисковик Elasticsearch (ES). По сути это масштабируемое хранилище для быстрого поиска и анализа Big Data в онлайн-режиме.

ES — одна из составляющих ELK-стека, который также включает в себя следующие компоненты:

  • Logstash: инструмент, занимающийся сбором, преобразованием, сохранением событий из различных источников (файлы, логи, базы данных) в общее хранилище.
  • Kibana: веб-интерфейс, отвечающий за взаимодействие с хранящимися в индексах Elasticsearch данными, отображающий динамические панели мониторинга, таблицы, графики, диаграммы изменений в запросах к системе.
  • FileBeat: этот агент устанавливается на серверах с целью отправки оперативной информации в систему.

Система Elasticsearch создана специально для Big Data. Поговорим о принципах действия этой системы, ее преимуществах, недостатках, сферах применения.

История разработки Elasticsearch

Можно выделить следующие этапы развития поисковой системы Elasticsearch:

  • февраль 2010 года: Шай Бейнон выпустил первую версию системы под лицензией Apache0.
  • 2012 год: для коммерциализации проекта Бейнон основал нидерландскую компанию Elasticsearch BV, что стало значительным шагом в развитии системы.
  • июнь 2014 года: стартап привлек внешнее финансирование в размере $104 миллионов.
  • март 2015 года: компания меняет название на Elastic, что отражает более широкий спектр продуктов и услуг.
  • 2018 год: Elastic открыла исходный код коммерческого продукта X-Pack, расширяющего возможности Elasticsearch, включая обеспечение кибербезопасности: этот шаг подчеркивал их стремление к открытости и прозрачности.
  • 2019 год: базовые функции, отвечающие за информационную безопасность ELK-стека, стали бесплатными для всех пользователей, а не только для коммерческих клиентов, что усилило доступность и привлекательность этой технологии для широкой аудитории.

Вскоре после своего выпуска в 2010 году Elasticsearch стала самым востребованным поисковым движком. Программа часто применяется для следующих задач:

  • полнотекстового поиска, 
  • анализа систем безопасности, 
  • анализа логов, 
  • бизнес-аналитики, 
  • мониторинга текущих процессов.

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

В ES реализована поддержка масштабируемого поиска и многопоточности на базе библиотеки Apache Lucene, специально спроектированной для поиска и индексации сведений в разных типах онлайн-документов. Все функции Lucene доступны через API-интерфейсы на JSON и Java. ES позволяет выполнять GET-запросы, однако не поддерживает распределенных транзакций. Беспрепятственная интеграция с Kibana обеспечивает простое управление через HTTP-интерфейс с использованием JSON-запросов благодаря REST API.

В крупных Big Data системах несколько экземпляров Elasticsearch объединяются в кластер. Поисковые индексы могут быть разделены на сегменты. Каждый из этих сегментов реплицируется несколько раз для большей устойчивости к отказам. На узле кластера системы размещается несколько сегментов. Каждый узел действует как координатор, направляя операции к соответствующему сегменту с автоматической перебалансировкой и маршрутизацией. Связанные друг с другом данные часто хранятся в одном индексе из первичных сегментов и реплик. После создания индекса количество первичных сегментов нельзя изменить. Долгосрочное хранение индекса обеспечивает шлюз, позволяющий восстанавливать его в случае сбоя сервера.

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

Перечислим плюсы архитектуры поисковой системы Elasticsearch.

  1. Доступность, простота, обеспеченная простыми API на основе REST и удобного HTTP-интерфейса. Программа работает с документами в формате JSON без необходимости определения схемы заранее, это обеспечивает легкое начало работы и быструю разработку приложений.
  2. Высокая мощность ES возможна благодаря ее распределенной архитектуре. Это свойство обеспечивает комфортную работу с большими объемами данных, гарантируя мгновенный поиск релевантных результатов.
  3. ES поставляется с бесплатными инструментами и модулями для преобразования и загрузки данных. Разные открытые модули (языковые анализаторы, системы рекомендаций) позволяют расширить функциональность приложений.
  4. Онлайн-операции, такие как чтение или запись данных, чаще всего выполняются в считанные секунды, что делает ES идеальным выбором для сценариев, подразумевающих быстроту реакции, например, мониторинга приложений или выявления ошибок.
  5. Elasticsearch поддерживает множество языков программирования, что способствует удобству разработки и интеграции приложений.
  6. Высокая отказоустойчивость — еще одно достоинство поисковой системы Elasticsearch. Создание нескольких копий на разных узлах кластера способствует сохранению и доступу к нужным сведениям.
  7. Язык запросов на основе JSON поддерживает работу со сложными поисковыми строками, сопоставляет условия, фильтры, агрегацию, осуществляет поиск по геолокации. 
  8. Благодаря широким возможностям для текстовой информации с дальнейшим анализом Elasticsearch поддерживает стемминг, токенизацию, работает со стоп-словами в тексте. Это обеспечивает широкие возможности для выполнения запросов, в том числе в больших источниках.

Тем не менее, у системы есть и свои минусы:

  1. Ограниченные возможности масштабирования. Всю информацию в системе можно хранить на нескольких равноправных узлах, но это требует определенного уровня администраторских навыков из-за нетривиальных возможностей настройки. Ошибки в масштабировании либо конфигурации кластера часто приводят к затрудненному доступу или падению производительности системы.
  2. Значительное потребление ресурсов. Чтобы поиск в Elasticsearch работал полноценно, нужны большие объемы оперативной памяти и процессорное время. Обработка big data либо выполнение сложных запросов требуют еще больше ресурсов, а это уже сказывается на общей производительности системы.
  3. Сложности с языком запросов. Язык поисковых запросов Elasticsearch довольно сложный, поэтому для полноценного использования всех его технических возможностей пользователю нужно хорошо понимать структуру индексов, семантику и синтаксис запросов. Результаты некорректных запросов не отличаются ни точностью, ни полнотой. Следствием часто становятся проблемы с разработкой либо дальнейшей отладкой приложений.
  4. Недостатки в поддержке транзакций. ES не работает с ACID-совместимыми решениями, так как в него не встроена автоматическая поддержка транзакций. При этом система без проблем фокусируется на онлайн-обработке данных с оперативным поиском по запросам.
  5. Затруднения с обновлением и удалением данных. ES оперативно индексирует новые объемы данных с целью дальнейшего поиска по ним, но процессы удаления либо обновления уже имеющейся информации оказываются сложнее. Любой документ обновляется через создание новой версии с сохранением старой в индексе, а это повышает объем, одновременно снижая производительность.
  6. Недостатки системы безопасности. В ES нет собственных встроенных механизмов идентификации пользователя. А это требует использования дополнительных программ вместе с настройкой безопасного доступа.

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

21 января 2021 года Elastic NV объявила об изменении стратегии лицензирования программного обеспечения. Новые версии решений Elasticsearch и Kibana перестали выпускаться под лицензией Apache версии 2.0 (ALv2). Вместо этого были предложены новые версии программного обеспечения с лицензиями Elastic или SSPL, которые не были открытыми.

Для сторонников открытого кода разработчики запустили проект OpenSearch. Это развиваемая open source сообществом ветвь кода Elasticsearch и Kibana с лицензией ALv2.

Также схожей функциональностью обладают следующие системы:

  1. Apache Solr — поисковик для онлайн-аналитики на базе платформы Lucene. Главное назначение Solr — увеличение производительности при обработке и анализе big data. Помимо базовых возможностей индексации, фасетного и геолокационного поиска Solr предоставляет обширный набор возможностей для аналитики. Достаточно свободный подход к настройке индексации и работе с поисковыми запросами делает Solr привлекательным решением.
  2. Splunk — многофункциональная система, предназначенная для обработки разных типов данных — метрик, событий, логов. В то время как основное применение Splunk — мониторинг и отладка, программа также может быть использована в качестве поискового движка.
  3. Sphinx — легковесная, но при этом производительная и достаточно простая для пользователей оpen source платформа для поиска и анализа big data. В ней реализованы инструменты для работы с большими объемами информации, кроме того, она поддерживает разные виды подзапросов и множество языков.
  4. Amazon CloudSearch — облачная поисковая система, разработанная компанией Amazon Web Services. Этот сервис также способен искать, анализировать и индексировать данные. С простым интерфейсом RESTful API и интеграцией с другими решениями от Amazon, (S3, EC2) CloudSearch готова к автоматическому масштабированию.

Области применения Elasticsearch

ES применяется везде, где есть Big Data. Вот несколько примеров:

  1. Извлечение данных с дальнейшей индексацией: это подходит для работы с текстом, логами, временными рядами, метаданными. Так обеспечивается быстрый доступ с возможностью выполнения сложных запросов.
  2. Анализ логов с дальнейшим сбором и визуализацией собранных данных. При использовании с Kibana в сочетании с Logstash образуется эффективная система, способная обрабатывать важную информацию из логов.
  3. Системы мониторинга: ES предоставляет работающие механизмы для анализа показателей производительности, числовых метрик крупных веб-серверов, других аналогичных событий.
  4. Персональные рекомендации, основанные на анализе поведения пользователя в интернете.
  5. Умный поиск: обеспечивает удобный механизм онлайн-поиска с возможностью автозаполнения запросов, исправления багов, а также рядом других функций, улучшающих пользовательский опыт.

Варианты использования ES в современных ИT-продуктах:

  1. Интернет-порталы: наглядный пример — поисковый движок Wikimedia.
  2. Электронная коммерция: поиск товаров и рекомендации посетителям сайта на основе ES работают в каталоге на сайте Leroy Merlin.
  3. Больницы, клиники, регистратуры: создают собственные сервисы для работы с информацией о пациентах.
  4. Системы логирования и онлайн-мониторинга: ES применяется для анализа показателей производительности.
  5. Банки и другие крупные финансовые учреждения: поиск транзакций в личном кабинете клиента Альфа-Банка также работает за счет ES.
  6. Netflix: разработал поисковую систему для своего стримингового сервиса на базе движка ES.

Эти и многие другие компании, от Amazon до SoundCloud, успешно внедряют поисковые системы на основе Elasticsearch.

Начало работы с системой Elasticsearch

  1. Установка: загрузите установочный файл для вашей операционной системы с сайта, затем следуйте указаниям. 
  2. Инициализация и конфигурация: после завершения установки запустите ES на своем компьютере и проверьте, работает ли она. Для этого нужно перейти по адресу "http://localhost:9200" в вашем браузере. Если на экране высветятся сведения об используемой версии программы, это значит, что установка завершена. 
  3. Формирование индексов: данные в системе организованы в виде индексов с информацией о документах и их типах. Создайте индекс, определите поля, используемые типы данных. Для этого можно применить API либо инструменты администрирования. 
  4. Индексация: добавьте данные в индекс. Это также делается через API либо инструменты администрирования. Система поддерживает разные форматы данных, в том числе текст, числа, даты, геолокацию. 
  5. Поиск: в Elasticsearch хорошо развит поисковый движок. Используйте разнообразные запросы для поиска нужной вам информации в индексе. Вы можете применять фильтры и другие функции системы для получения более точных результатов. 
  6. Анализ данных: в ES реализованы мощные аналитические инструменты. Применяйте агрегации для получения статистических данных, группируйте информацию для большего удобства, создавайте графики, стройте интерактивные дашборды. 

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