Top.Mail.Ru
Вход
Регистрация

Elasticsearch – поиск для самых больших

Elasticsearch – поиск для самых больших

Elasticsearch – поиск для самых больших

Чем крупнее компания, тем большим количеством данных она владеет. Но все эти петабайты ценной для бизнеса и его клиентов информации не должны лежать без дела – они должны работать, постоянно и эффективно.

Требования к современным системам быстрого внутреннего поиска постоянно меняются и растут. Меняется и сама структура данных. Если раньше это были единообразные записи в таблицах БД, то теперь чаще речь идет об «озерах данных», содержащих неструктурированную информацию, объектных хранилищах S3 и т.д. 

Не так уж много существует поисковых решений, способных хорошо показать себя в подобной среде, особенно если дело касается поиска среди многих и многих петабайт. Одной из самых популярных в области Big Data поисковых систем такого рода является, безусловно, Elasticsearch.

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

В настоящее время возможностями Elasticsearch пользуются множество всемирно известных компаний, среди которых GitHub, Netflix, Uber, Slack, Microsoft и пр. Так, к примеру, для организации поиска по своим бездонным хранилищам Netflix постоянно использует 700-800 узлов Elasticsearch, объединенных в 100 кластеров. Uber обрабатывает по тысяче поисковых запросов в секунду и более, а GitHub индексирует более 8 млн репозиториев, обслуживая более 4 млн пользователей.

Принципы работы Elasticsearch

В основе Elasticsearch лежит написанный на Java поисковый движок, использующий свободную библиотеку скоростного полнотекстового поиска Lucene и поддерживающий JSON REST API. К ключевым достоинствам Elasticsearch, помимо высочайшей производительности и возможности практически безграничного горизонтального масштабирования, можно отнести автоматическую индексацию новых объектов, которые становятся доступными сразу после загрузки в БД в соответствии с концепцией NoSQL. 

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

Elasticsearch можно назвать документно-ориентированной базой данных с поддержкой многопоточности. Поиск в реальном времени может осуществляться по документам любого типа при помощи API-интерфейсов библиотеки Lucene и запросов GET.

В случае необходимости, которая в крупных проектах возникает почти всегда, несколько копий Elasticsearch могут быть объединены в кластер. Группа таких кластеров может хранить реплицированные копии сегментов индекса, за счет чего достигается высокая отказоустойчивость решения. 

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

Также по теме

Elastic Stack

Важно отметить, что в своем типичном воплощении Elasticsearch не используется в отрыве от других продуктов Elastic – Logstash, Kibana и FileBeat. Вместе они образуют комплексное решение, получившее общее название Elastic Stack.

Logstash – инструмент сбора, обработки и отправки в хранилище всевозможных событий из разных источников – журналы, пакеты, события, транзакции, временные метки и т.д. Logstash написан на JRuby и работает на JVM, что позволяет запускать его на разных платформах. 

В качестве источников данных для этого инструмента могут служить социальные сети, новостные агрегаторы, внутренние данные систем электронной коммерции, CRM, финансовые показатели, телеметрия мобильных устройств, сенсорные сети IoT, HTTP-запросы и ответы на них, журналы Apache или Windows, а также многое другое.

Широкий ассортимент фильтров Logstash помогает извлекать ценные выводы из данных при помощи преобразований и анализа. Построенные на основе регулярных выражений шаблоны фильтров могут быть объединены в последовательности. Также анализ данных облегчает набор плагинов для Logstash, позволяющих преобразовать содержимое журналов в любой удобный формат.

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

FileBeat – легковесный серверный агент, с помощью которого можно организовать отправку логов серверов в Logstash. Этот элемент стека не является обязательным, однако зачастую оказывается весьма полезен в инфраструктурах определенных типов.

Особенности лицензирования

Все элементы Elastic Stack доступны для изучения и использования в виде исходных кодов в репозитории GitHub. До недавнего времени они распространялись по лицензии Apache 2.0, однако в январе 2021 года Elastic объявила о переходе на лицензию SSPL (Server Side Public License), накладывающую некоторые ограничения на коммерческое использование. 

Теперь эксплуатанты Elastic Stack могут продолжать пользоваться им безвозмездно только в том случае, если все остальные компоненты, вовлеченные в работу сервиса, также будут публиковаться в виде открытого исходного кода. 

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

В то же время, основное коммерческое предложение Elastic состоит вовсе не в этом. Различные варианты лицензий, такие как Gold, Platinum и Enterprise, включают в себя многочисленные дополнительные инструменты, направленные на расширение функциональности Elastic Stack.

·      Gold включает в себя механизмы авторизации через Active Directory/LDAP, дополнительные инструменты внутреннего аудита, расширенные возможности службы оповещений и, разумеется, техническую поддержку в рабочие часы.

·      Platinum в дополнение к вышеперечисленному предлагает встроенные инструменты машинного обучения, поддержку ODBC/JDBC, настройки гранулярного доступа вплоть до отдельных документов, кросс-кластерную репликацию и ряд других возможностей, включая круглосуточную техподдержку. На сегодняшний день это самый востребованный тип лицензий на Elastic Stack.

·      Enterprise, помимо возможностей Platinum, включает в себя решение Elastic Cloud Enterprise, оркестратор Elastic Cloud on Kubernetes, инструмент киберзащиты конечных устройств Endgame, а также поддержку неограниченного количества проектов на базе Elastic.

ПОЛУЧИТЕ КОНСУЛЬТАЦИЮ ЭКСПЕРТА!

Никита Комиссаров, руководитель направления Средства разработки


Самое читаемое

1029 | Записи вебинаров Яндекс 360 для бизнеса ваш виртуальный офис 887 | Записи вебинаров Замена Microsoft AD на российскую службу каталогов "Альт Домен" 862 | SoftPowerПриглашаем на главный инженерный форум года СИЛА ПЛАТФОРМЫ 854 | ВебинарыCommuniGate Pro: замена Microsoft Exchange Server 695 | Акции и скидкиCкидка 50% на сервис удаленного доступа PRO32 Connect 684 | Новости SyssoftНОТА и «Системный софт» объединяют усилия для импортозамещения продуктов Atlassian 602 | Акции и скидкиСнижаем минимальный порог на покупку лицензий Platform V SberLinux OS Server 545 | Новости Syssoft«Системный софт» и разработчик информационных систем «Адванта» заключили соглашение о партнерстве 494 | Записи вебинаровCommuniGate Pro: российская замена Microsoft Exchange Server 382 | Записи вебинаровСоздание спецификаций в nanoCAD BIM Конструкции 183 | Новости SyssoftПартнерство «Системного софта» и «Нума Технологии» 168 | Новости Syssoft«Системный софт» и «СКБ Контур» заключили партнерское соглашение 162 | ВебинарыPostgres Pro Enterprise Manager полнофункциональный графический инструмент управления Базами Данных 143 | Новости Syssoft«Системный софт» получил компетенцию «Крупные корпоративные внедрения» 1С-Битрикс