Elasticsearch: что это такое, как это работает и для чего используется | OTUS

Курсы

Программирование
Java Developer. Professional Highload Architect C++ Developer. Basic Специализация C++ Developer C++ Developer. Professional Java Developer. Basic Kotlin Developer. Basic Microservice Architecture JavaScript Developer. Basic Cloud Solution Architecture Team Lead C# Developer. Professional Алгоритмы и структуры данных Rust Developer C# Developer. Basic NoSQL Выбор профессии в IT
-99%
Python Developer. Basic Python Developer. Professional Базы данных iOS Developer. Professional React.js Developer Scala-разработчик Специализация iOS Unity Game Developer. Basic MS SQL Server Developer Kotlin Backend Developer Node.js Developer Symfony Framework PHP Developer. Basic Буткемп Java Groovy Developer
Специализации Курсы в разработке Подготовительные курсы Подписка
+7 499 938-92-02

Elasticsearch: что это такое, как это работает и для чего используется

Когда люди спрашивают: «Что такое Elasticsearch?», некоторые могут отвечать, что это «индекс», «поисковая система», «аналитическая база данных», «решение для больших данных», что «это быстро и масштабируемо» или что «это вроде как Google». В зависимости от вашего уровня знакомства с этой технологией эти ответы могут либо приблизить вас к моменту ах-ха, либо еще больше сбить вас с толку. Но правда в том, что все эти ответы верны, и это часть привлекательности Elasticsearch. За прошедшие годы Elasticsearch и выросшая вокруг него экосистема компонентов под названием «Elastic Stack» использовались для все большего числа вариантов использования, от простого поиска на веб-сайте или в документе, сбора и анализа данных журнала до бизнес-аналитики. инструмент для анализа и визуализации данных. Cамая популярная корпоративная поисковая система и одна из 10 самых популярных СУБД ? Мы ответим на этот вопрос в этом посте, разобравшись, что такое Elasticsearch, как он работает и как он используется. Давайте погрузимся.

Что такое эластичный поиск?

По сути, вы можете думать об Elasticsearch как о сервере, который может обрабатывать запросы JSON и возвращать вам данные JSON.

Elasticsearch — это распределенная поисковая и аналитическая система с открытым исходным кодом, построенная на Apache Lucene и разработанная на Java. Он начинался как масштабируемая версия поисковой среды Lucene с открытым исходным кодом, а затем была добавлена ​​возможность горизонтального масштабирования индексов Lucene. Elasticsearch позволяет хранить, искать и анализировать огромные объемы данных быстро и почти в режиме реального времени и давать ответы за миллисекунды. Он может обеспечить быстрые ответы при поиске, поскольку вместо прямого поиска текста он выполняет поиск по индексу. Он использует структуру, основанную на документах, а не на таблицах и схемах, и поставляется с обширными API-интерфейсами REST для хранения и поиска данных. По сути, вы можете думать об Elasticsearch как о сервере, который может обрабатывать запросы JSON и возвращать вам данные JSON.

Как работает эластичный поиск?

Чтобы лучше понять, как работает Elasticsearch, давайте рассмотрим некоторые основные понятия того, как он организует данные и его серверные компоненты.

Логические концепции

Документы

Документы — это основная единица информации, которая может быть проиндексирована в Elasticsearch и выражена в формате JSON, который является глобальным форматом обмена данными в Интернете. Вы можете думать о документе как о строке в реляционной базе данных, представляющей данный объект — то, что вы ищете. В Elasticsearch документ может быть больше, чем просто текст, это могут быть любые структурированные данные, закодированные в JSON. Этими данными могут быть числа, строки и даты. Каждый документ имеет уникальный идентификатор и заданный тип данных, который описывает, к какому типу относится документ. Например, документ может представлять собой энциклопедическую статью или записи журнала с веб-сервера.

Индексы

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

Перевернутый индекс

Индекс в Elasticsearch на самом деле называется инвертированным индексом, который является механизмом, с помощью которого работают все поисковые системы. Это структура данных, в которой хранится сопоставление содержимого, такого как слова или числа, с его расположением в документе или наборе документов. По сути, это структура данных, похожая на хэш-карту, которая направляет вас от слова к документу. Инвертированный индекс не хранит строки напрямую, а вместо этого разбивает каждый документ на отдельные условия поиска (т. е. каждое слово), а затем сопоставляет каждое условие поиска с документами, в которых встречаются эти условия поиска. Например, на изображении ниже термин «лучший» встречается в документе 2, поэтому он сопоставлен с этим документом. Это служит для быстрого поиска того, где найти условия поиска в данном документе. И

Визуальное представление инвертированного индекса:

1-20219-343533.png

Бэкэнд-компоненты

Кластер

Кластер Elasticsearch — это группа из одного или нескольких экземпляров узла, соединенных вместе. Сила кластера Elasticsearch заключается в распределении задач, поиске и индексировании по всем узлам кластера.

Узел

Узел — это отдельный сервер, который является частью кластера. Узел хранит данные и участвует в возможностях индексирования и поиска кластера. Узел Elasticsearch можно настроить по-разному:

Главный узел — управляет кластером Elasticsearch и отвечает за все операции в масштабе кластера, такие как создание/удаление индекса и добавление/удаление узлов.

Узел данных — хранит данные и выполняет операции с данными, такие как поиск и агрегирование.

Клиентский узел — перенаправляет запросы кластера на главный узел, а запросы, связанные с данными, — на узлы данных.

Осколки

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

Реплики

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

Эластичный стек (ELK)

Elasticsearch — это центральный компонент Elastic Stack, набора инструментов с открытым исходным кодом для приема, обогащения, хранения, анализа и визуализации данных. Его обычно называют стеком «ELK» в честь его компонентов Elasticsearch, Logstash и Kibana, и теперь он также включает в себя Beats. Несмотря на то, что по своей сути это поисковая система, пользователи начали использовать Elasticsearch для сбора данных журналов и хотели легко получать и визуализировать эти данные.

Кибана

Кибана— это инструмент визуализации и управления данными для Elasticsearch, который предоставляет гистограммы, линейные графики, круговые диаграммы и карты в реальном времени. Он позволяет визуализировать данные Elasticsearch и перемещаться по стеку Elastic. Вы можете выбрать способ придания формы своим данным, начав с одного вопроса, чтобы узнать, куда приведет вас интерактивная визуализация. Например, поскольку Kibana часто используется для анализа журналов, он позволяет вам отвечать на вопросы о том, откуда поступают ваши веб-посещения, ваши URL-адреса распространения и так далее. Если вы не создаете собственное приложение поверх Elasticsearch, Kibana — отличный способ поиска и визуализации вашего индекса с помощью мощного и гибкого пользовательского интерфейса. Однако основным недостатком является то, что каждая визуализация может работать только с одним шаблоном индекс/индекс. Итак, если у вас есть индексы со строго разными данными, вам придется создавать отдельные визуализации для каждого. Для более продвинутых вариантов использования Знай – хороший вариант. Он позволяет объединять данные Elasticsearch по нескольким индексам и смешивать их с другими источниками данных SQL/NoSQL/REST-API, а затем создавать из них визуализации в удобном для бизнес-пользователей пользовательском интерфейсе.

Логсташ

Logstash используется для сбора и обработки данных и отправки их в Elasticsearch. Это конвейер обработки данных на стороне сервера с открытым исходным кодом, который одновременно принимает данные из множества источников, преобразует их, а затем отправляет для сбора. Он также преобразует и подготавливает данные независимо от формата, определяя именованные поля для построения структуры и преобразовывая их для сведения к общему формату. Например, поскольку данные часто разбросаны по разным системам в разных форматах, Logstash позволяет вам связать вместе разные системы, такие как веб-серверы, базы данных, сервисы Amazon и т. д., и публиковать данные, где бы они ни находились, в непрерывном потоковом режиме.

Удары

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

Для чего используется Elasticsearch?

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

Основные варианты использования

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

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

Корпоративный поиск — Elasticsearch обеспечивает поиск по всему предприятию, включая поиск документов, поиск продуктов электронной коммерции, поиск по блогам, поиск людей и любую форму поиска, которую вы можете себе представить. Фактически, он неуклонно проникает в поисковые решения большинства популярных веб-сайтов, которыми мы пользуемся ежедневно, и заменяет их. С точки зрения корпоративной специфики Elasticsearch успешно используется во внутренних сетях компаний.

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

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

Аналитика безопасности. Еще одним важным аналитическим приложением Elasticsearch является анализ безопасности. Журналы доступа и аналогичные журналы, касающиеся безопасности системы, можно анализировать с помощью стека ELK, предоставляя более полную картину того, что происходит в ваших системах в режиме реального времени.

Бизнес-аналитика. Многие встроенные функции, доступные в стеке ELK, делают его хорошим вариантом в качестве инструмента бизнес-аналитики. Однако для внедрения этого продукта и в большинстве организаций требуется крутая кривая обучения. Это особенно актуально в тех случаях, когда у компаний есть несколько источников данных помимо Elasticsearch, поскольку Kibana работает только с данными Elasticsearch. Хорошей альтернативой является Knowi , аналитическая платформа, которая изначально интегрируется с Elasticsearch и позволяет даже нетехническим бизнес-пользователям создавать визуализации и выполнять аналитику данных Elasticsearch без предварительного знания или опыта работы со стеком ELK.

Варианты использования, компании

Нетфликс

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

Ebay

Благодаря бесчисленным критически важным для бизнеса вариантам использования текстового поиска и аналитики, использующим Elasticsearch в качестве основы, eBay создала специальную платформу «Elasticsearch-as-a-Service», позволяющую легко выделять кластеры Elasticsearch на своей внутренней облачной платформе на основе OpenStack.

Волмарт

Walmart использует Elastic Stack, чтобы раскрыть скрытый потенциал своих данных, чтобы получить представление о моделях покупок клиентов, отслеживать показатели эффективности магазина и анализировать праздники — и все это практически в режиме реального времени. Он также использует функции безопасности ELK для обеспечения безопасности с помощью единого входа, оповещения об обнаружении аномалий и мониторинга для DevOps.

Резюме

Так что же такое Elasticsearch? В этом посте мы попытались ответить на этот вопрос через призму понимания того, что это такое, как оно работает и как оно используется, и мы все еще едва касаемся поверхности, изучая все, что есть об этом. Но на основе того, что мы рассмотрели, мы можем кратко резюмировать, что Elasticsearch по своей сути является поисковой системой, чья базовая архитектура и компоненты делают ее быстрой и масштабируемой, находясь в центре экосистемы дополнительных инструментов, которые вместе можно использовать для многие варианты использования, включая поиск, аналитику, а также обработку и хранение данных. Если вы хотите узнать больше об Elasticsearch и попробовать его самостоятельно, вы можете начать здесь.. А для более продвинутых вариантов использования, в которых вам необходимо объединять и смешивать данные Elasticsearch по нескольким индексам и другим источникам данных SQL/NoSQL/REST-API, ознакомьтесь с Knowi , аналитической платформой, которая изначально интегрируется с Elasticsearch и доступна как для технических и нетехнических пользователей. Удачных поисков!

Больше статей читайте здесь.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться