Elasticsearch
Elasticsearch is a distributed, RESTful search and analytics engine capable of addressing a growing number of use cases. As the heart of the Elastic Stack, it centrally stores your data for lightning fast search, fine‑tuned relevancy, and powerful analytics that scale with ease.
New to Elasticsearch? Get up and running in no time.
Lay a strong foundation for working with Elasticsearch in our Elasticsearch Engineer training.
Build advanced Elasticsearch skills for tuning relevance, text analysis, and more.
New
The Elasticsearch Relevance Engine (ESRE): A full suite of retrieval algorithms with the ability to integrate with large language models (LLMs). All accessible via a simple, unified API. Combine the best of AI with Elasticsearch.
Dive deeper into the new Elasticsearch Relevance Engine
The Elasticsearch Relevance Engine™ (ESRE) is designed to power artificial intelligence-based search applications. Use ESRE to apply semantic search with superior relevance out of the box (without domain adaptation), integrate with external large language models (LLMs), implement hybrid search, and use third-party or your own transformer models.
Query & Analyze
Ask your data questions of all kinds
Search your way
Elasticsearch lets you perform and combine many types of searches — structured, unstructured, geo, metric — any way you want. Start simple with one question and see where it takes you.
Analyze at scale
It’s one thing to find the 10 best documents to match your query. But how do you make sense of, say, a billion log lines? Elasticsearch aggregations let you zoom out to explore trends and patterns in your data.
Speed
Elasticsearch is fast. Really, really fast.
Rapid results
When you get answers instantly, your relationship with your data changes. You can afford to iterate and cover more ground.
Powerful design
Being this fast isn’t easy. We’ve implemented inverted indices with finite state transducers for full-text querying, BKD trees for storing numeric and geo data, and a column store for analytics.
All-inclusive
And since everything is indexed, you’re never left with index envy. You can leverage and access all of your data at ludicrously awesome speeds.
Scalability
Run it on your laptop. Or hundreds of servers with petabytes of data.
Go from prototype to production seamlessly; you talk to Elasticsearch running on a single node the same way you would in a 300-node cluster.
It scales horizontally to handle kajillions of events per second, while automatically managing how indices and queries are distributed across the cluster for oh-so-smooth operations.
Resiliency
We cover the bases while you swing for the fences.
Hardware rebels. Networks partition. Elasticsearch detects failures to keep your cluster (and your data) safe and available. With cross-cluster replication, a secondary cluster can spring into action as a hot backup. Elasticsearch operates in a distributed environment designed from the ground up for perpetual peace of mind.
FLEXIBILITY
Store and explore data to fit your needs.
Data is constantly evolving, and it can become expensive to store and search all of it. With Elasticsearch you can balance performance and cost. Store data locally for fast queries or remotely on low-cost S3 for unlimited data. With runtime fields, you can also quickly onboard your data — and adapt to changes.
Что такое Elasticsearch
Elasticsearch – это распределенный поисковый и аналитический движок на базе Apache Lucene. Вскоре после выпуска в 2010 году Elasticsearch стала самым популярным поисковым движком и обычно используется для таких примеров, как анализ журналов, полнотекстовый поиск, интеллектуальные системы безопасности, бизнес-аналитика и мониторинг текущих процессов.
21 января 2021 года Elastic NV объявила об изменении стратегии лицензирования программного обеспечения и о том, что новые версии Elasticsearch и Kibana под разрешительной лицензией Apache версии 2.0 (ALv2) выходить не будут. Вместо них предложены новые версии программного обеспечения по лицензии Elastic, а исходный код доступен по лицензии Elastic или SSPL. Эти лицензии не являются открытыми исходными кодами и не дают пользователям ту же свободу. Желая предоставить специалистам, которые работают с открытым исходным кодом, и нашим клиентам безопасный высококачественный комплект инструментов для поиска и аналитики с полностью открытым исходным кодом, мы создали проект OpenSearch – развиваемую сообществом ветвь открытого исходного кода Elasticsearch и Kibana с лицензией ALv2.
Как работает Elasticsearch?
Вы можете отправлять данные в Elasticsearch в виде документов JSON с помощью API или инструментов приема, таких как Logstash и Amazon Kinesis Firehose. Elasticsearch автоматически сохраняет исходный документ и добавляет ссылку на него в индекс кластера, включая возможность поиска. Следом можно найти и извлечь документ, используя API Elasticsearch. Также для визуализации данных и создания интерактивных панелей управления можно задействовать Kibana – инструмент визуализации с Elasticsearch.
Версии Elasticsearch с лицензией Apache 2.0 (до версии 7.10.2 и Kibana 7.10.2) можно запускать локально, на Amazon EC2 или в сервисе Amazon OpenSearch. При развертывании в локальной среде или на Amazon EC2 вы несете ответственность за установку Elasticsearch и другого необходимого программного обеспечения, подготовку инфраструктуры и управление кластером. С другой стороны, сервис Amazon OpenSearch – это полностью управляемый сервис, поэтому вам не нужно беспокоиться о трудоемком процессе управления кластерами и таких задачах, как подготовка оборудования, исправление программного обеспечения, восстановление после сбоев, резервное копирование и мониторинг.
Преимущества Elasticsearch
Выгодное соотношение цены и времени
Elasticsearch предлагает простые API на основе REST и легкий HTTP-интерфейс, а также использует документы JSON без схем, благодаря чему проще приступить к работе и быстро создавать приложения для различным примеров использования.
Высокая производительность
Распределенная система Elasticsearch позволяет параллельно обрабатывать большие объемы данных, мгновенно подбирая наилучшее соответствие к запросу.
Бесплатные инструменты и модули
Elasticsearch встроен в Kibana, популярный инструмент визуализации и составления отчетов. Доступна также интеграция с Beats и Logstash, при этом исходные данные легко преобразовывать и загрузить в кластер Elasticsearch. Можно использовать ряд подключаемых модулей Elasticsearch с открытым исходным кодом, таких как языковые анализаторы и механизмы рекомендаций, для более широкой функциональности ваших приложений.
Операции в режиме, близком к реальному времени
Выполнение операций в Elasticsearch, таких как чтение или запись данных, обычно занимает менее секунды. Это позволяет использовать его в таких примерах, где необходимо реагировать почти в режиме реального времени, например для мониторинга приложений и обнаружения аномалий.
Простая разработка приложений
Elasticsearch обеспечивает поддержку различных языков, включая Java, Python, PHP, JavaScript, Node.js, Ruby и многие другие.
Начало работы с Elasticsearch в AWS
Управление и масштабирование Elasticsearch может оказаться сложным и потребует знаний в области настройки и конфигурации Elasticsearch. Чтобы клиентам было легче запустить Elasticsearch с открытым исходным кодом, AWS предлагает Сервис Amazon OpenSearch для интерактивной аналитики журналов, мониторинга приложений в режиме реального времени, поиска по веб-сайтам и выполнения других задач.
Чтобы узнать больше о сервисе OpenSearch и способах его практического использования, перейдите по этой ссылке.
В состав OpenSearch входят некоторые фрагменты кода Elasticsearch, созданного Elasticsearch B.V. и распространяемого по лицензии Apache, а также фрагменты другого исходного кода. Elasticsearch B.V. не является источником другого исходного кода. ELASTICSEARCH является зарегистрированной торговой маркой Elasticsearch B.V.
Подробнее о ценах на Сервис Amazon OpenSearch
Готовы приступить к разработке?
Elasticsearch
Elasticsearch – это одна из самых популярных поисковых систем в области Big Data, масштабируемое нереляционное хранилище данных с открытым исходным кодом, аналитическая NoSQL-СУБД с широким набором функций полнотекстового поиска.
Назначение и основные функциональные возможности
Elasticsearch (ES) – масштабируемая утилита полнотекстового поиска и аналитики, которая позволяет быстро в режиме реального времени хранить, искать и анализировать большие объемы данных. ES является ядром ELK-стека (Elastic Stack), в состав которого, помимо Elasticsearch, входят следующие продукты [1]:
- Logstash– инструмент сбора, преобразования и сохранения в общем хранилище событий из различных источников (файлы, базы данных, логи и пр.) в реальном времени;
- Kibana– веб-интерфейс для Elasticsearch, чтобы взаимодействовать с данными, которые хранятся в его индексах ES через динамические панели мониторинга, таблицы, графики и диаграммы, которые отображают изменения в ES-запросах в реальном времени;
- FileBeat –агент на серверах для отправки различных типов оперативных данных в ES.
Из ключевых функциональных возможностей Elasticsearch стоит отметить следующие [2]:
- автоматическая индексация новыхJSON-объектов, которые загружаются в базу и сразу становятся доступными для поиска, за счет отсутствия схемы согласно типичной NoSQL-концепции. Это позволяет ускорить прототипирование поисковых Big Data решений.
- поддержка восточных языков (китайский, японский, корейский);
- гибкостьпоисковых фильтров, включая нечеткий поиск и мультиарендность, когда в рамках одного объекта ES можно динамически организовать несколько различных поисковых систем;
- наличие встроенных анализаторов текста позволяет Elasticsearch автоматически выполнять токенизацию, лемматизацию, стемминг и прочие преобразования для решения NLP-задач, связанных с поиском данных.
Основные достоинства и недостатки Elasticsearch описаны здесь. Подчеркнем, что одним из главных недостатков ES считается склонность этой NoSQL-СУБД к утечкам данных из-за отсутствия встроенных средств обеспечения информационной безопасности, таких как система авторизации и ограничения прав доступа. Кроме того, после установки движок по умолчанию связывается с портом 9200 на все доступные интерфейсы, что открывает доступ к базе данных [2]. Подробнее об уязвимостях Elasticsearch читайте нашу отдельную статью.
История разработки и развития Elasticsearch
Основными ключевыми вехами в истории Elasticsearch считаются следующие:
- февраль 2010 года – Шай Бейнон (Shay Banon) выпустил первую версию системы под лицензией Apache0 [1];
- 2012 год – для коммерциализации проекта Бейнон основал нидерландскую компанию Elasticsearch BV [1];
- июнь 2014 года – стартап привлек внешнее финансирование в размере $104 миллионов [1];
- март 2015 года – компания Elasticsearch изменила название на Elastic [1];
- 2018 год – компания Elastic открыла исходный код своего коммерческого продукта X-Pack, который расширяет возможности Elasticsearch, включая обеспечение cybersecurity [3];
- 2019 год – компания Elastic сделала базовые функции обеспечения информационной безопасности ELK-стека бесплатными для всех пользователей, а не только тех, кто подписан на коммерческой основе [4].
Архитектура и принципы работы ES
ES обеспечивает горизонтально масштабируемый поиск с поддержкой многопоточности. Система основана на библиотеке Apache Lucene, которая предназначена для индексирования и поиска информации в любом типе документов. Все функции Lucene доступны через API-интерфейсы на JSON и Java. ES позволяет работать с GET- запросами в реальном времени, но не поддерживает распределённые транзакции. Бесшовная интеграция с Kibana гарантирует легкую управляемость по HTTP-интерфейсу с помощью JSON-запросов за счет REST API.
В масштабных Big Data системах несколько копий Elasticsearch объединяются в кластер. Поисковые индексы можно разделить на сегменты, реплицировав каждый из которых несколько раз. Это обеспечивает отказоустойчивость системы. На узле ES-кластера может размещаться несколько сегментов. Каждый узел кластера действует как координатор для делегирования операций правильному сегменту с автоматической перебалансировкой и маршрутизацией. Связанные данные часто хранятся в одном и том же индексе из одного или нескольких первичных сегментов и нескольких реплик. После создания индекса количество первичных сегментов нельзя изменить. Долгосрочное хранение индекса обеспечивает шлюз, позволяя восстанавливать индекс при сбое сервера [5].
Где используется Elasticsearch: компании и Big Data проекты
Благодаря широкому набору функциональных возможностей, особенно полнотекстовому поиску по множеству языков и аналитике в реальном времени, Elasticsearch активно применяется в различных Big Data системах крупных и средних компаний по всему миру. Из наиболее известных зарубежных пользователей стоит отметить корпорации Netflix, IBM, Facebook, Amazon, GitHub, Wikimedia, CERN, Mozilla, Adobe [2]. В России ES применяется в проектах Альфа-Банка, облачной платформе автоматизации рекрутмента Potok.io, сети лабораторий «Центр молекулярной диагностики» (CMD), ИТ-компании «Инфотех-Групп» и многих других предприятий, о чем мы писали здесь.
Источники
- https://ru.wikipedia.org/wiki/Elasticsearch
- https://ru.bmstu.wiki/Elastic_Elasticsearch
- https://habr.com/ru/post/443528/
- https://www.elastic.co/blog/security-for-elasticsearch-is-now-free
- https://ru.bmstu.wiki/Elastic_Stack
При подготовке материала использовались источники:
https://www.elastic.co/elasticsearch/
https://aws.amazon.com/ru/what-is/elasticsearch/