Коли люди запитують: «Що таке Elasticsearch?», деякі можуть відповісти, що це «індекс», «пошукова система», «аналітична база даних», «рішення для великих даних», що «це швидко і масштабовано» або що «це схоже на Google». Залежно від вашого рівня знайомства з цією технологією, ці відповіді можуть або наблизити вас до моменту «Знаю як», або ще більше заплутати. Але правда в тому, що всі ці відповіді правильні, і це частина привабливості Elasticsearch. Протягом багатьох років Elasticsearch та екосистема компонентів, яка виросла навколо нього під назвою «Elastic Stack», використовувалися для все більшої кількості випадків, від простого пошуку на веб-сайті або документі, збору та аналізу даних журналу до інструменту бізнес-аналітики для аналізу та візуалізації даних. Так як же проста пошукова система, створена співзасновником Elastic Шей Бенноном для кулінарних рецептів його дружини, виросла і стала найпопулярнішою сьогодні корпоративною пошуковою системою.
Що таке Elasticsearch?
Elasticsearch — це розподілений механізм пошуку та аналітики, побудований на Apache Lucene і розроблений на Java. Він починався як масштабована версія фреймворку пошуку з кодом Lucene, а потім додав можливість горизонтального масштабування індексів Lucene. Elasticsearch дозволяє зберігати, шукати та аналізувати величезні обсяги даних швидко та майже в режимі реального часу, за мілісекунди, надавати відповіді. Він дійсно може досягти швидких відповідей, оскільки замість безпосереднього пошуку тексту він шукає індекс. Він використовує структуру, засновану на документах, а не на таблицях і схемах, і поставляється з великими API REST для зберігання та пошуку даних. По суті, ви можете думати про Elasticsearch як про сервер, який може обробляти запити JSON і повертати вам дані JSON. (Для інформації: JSON — це текстовий формат обміну даними між комп’ютерами. JSON базується на тексті, може бути прочитаним людиною. Формат дає змогу описувати об’єкти та інші структури даних. Цей формат використовується переважно для передавання структурованої інформації через мережу).
Як працює Elasticsearch?
По суті, Elasticsearch організовує дані в документи, які є одиницями інформації на основі JSON, що представляють сутності. Документи групуються в індекси, аналогічні базам даних, виходячи з їх характеристик. Elasticsearch використовує інвертовані індекси, структуру даних, яка зіставляє слова з розташуванням документа, для ефективного пошуку. Розподілена архітектура Elasticsearch дозволяє швидко шукати та аналізувати величезні обсяги даних майже в режимі реального часу.
Щоб краще зрозуміти, як працює Elasticsearch, давайте розглянемо деякі основні поняття того, як він організовує дані та їх серверні компоненти.
Elasticsearch є центральним компонентом Elastic Stack, який є набором інструментів для прийому, збагачення, зберігання, аналізу та візуалізації даних. Його зазвичай називають стеком «ELK» на честь його компонентів Elasticsearch, Logstash і Kibana, а тепер також він включає Beats. Незважаючи на те, що ELK це пошукова система за своєю суттю, користувачі почали використовувати Elasticsearch для обробки даних логів / журналу з метою отримати спосіб візуалізувати ці дані.
Давайте коротко познайомимось з цими компонентами.
- Кібана
Kibana — це інструмент візуалізації та управління даними для Elasticsearch, який надає гістограми в режимі реального часу, лінійні графіки, кругові діаграми та карти. Це дозволяє візуалізувати дані Elasticsearch та орієнтуватися в Elastic Stack. Можна вибрати спосіб формування даних, почавши з одного запитання, щоб з’ясувати, куди приведе інтерактивне графічне відображення. Наприклад, оскільки Kibana часто використовується для аналізу журналів, вона дозволяє відповідати на запитання про те, звідки надходять ваші веб-звернення, URL-адреси розповсюдження тощо. Якщо ви не створюєте власну програму на основі Elasticsearch, Kibana — це чудовий спосіб пошуку та візуалізації вашого запиту за допомогою потужного та гнучкого інтерфейсу користувача.
- Logstash
Logstash використовується для агрегації та обробки даних та надсилання їх до Elasticsearch. Це конвеєр обробки даних на стороні сервера, який одночасно поглинає дані з безлічі джерел, перетворює їх на єдиний стандартизований вигляд, а потім відправляє для збору. Він також перетворює та готує дані незалежно від формату, визначаючи іменовані поля для побудови структури та перетворюючи їх для сходження у загальному форматі. Наприклад, оскільки дані часто розкидані по різних системах у різних форматах, Logstash дозволяє пов’язувати різні системи разом, як-от веб-сервери, бази даних, послуги Amazon тощо, і публікувати дані туди, куди потрібно, безперервною потоковою передачею.
- Beats
Beats — це набір легких, одноцільових агентів доставки даних, які використовуються для відправки даних із сотень або тисяч машин і систем в Logstash або Elasticsearch. Beats чудово підходять для збору даних, оскільки вони можуть розміщуватися на ваших серверах, з вашими контейнерами або розгортатися як функції, а потім централізувати дані в Elasticsearch. Наприклад, Filebeat може сидіти на вашому сервері, відстежувати файли журналів, коли вони надходять, аналізувати їх та імпортувати в Elasticsearch майже в режимі реального часу.
Для чого використовується Elasticsearch?
Тепер, коли ми маємо загальне розуміння того, що таке Elasticsearch, логічні концепції, що стоять за ним, та його архітектуру, ми краще розуміємо, чому і як його можна використовувати для різних випадків, як то:
- Пошук додатків — Для програм, які значною мірою покладаються на пошукову платформу для доступу, пошуку та звітування про дані.
- Пошук по веб-сайту — Веб-сайти, які зберігають багато вмісту, вважають Elasticsearch дуже корисним інструментом для ефективного та точного пошуку. Не дивно, що Elasticsearch неухильно набирає обертів у сфері пошуку доменів для сайтів.
- Корпоративний пошук — Elasticsearch дозволяє здійснювати пошук на рівні всього підприємства, який включає пошук документів, пошук продуктів електронної комерції, пошук у блозі, пошук людей і будь-яку форму пошуку, яку ви можете придумати. Фактично, він неухильно проникав і замінював пошукові рішення більшості популярних веб-сайтів, якими ми користуємося щодня. З точки зору більш конкретного підприємства, Elasticsearch використовується для великого успіху в інтрамережах компанії.
- Журналювання та аналітика журналів — Як ми вже обговорювали, Elasticsearch зазвичай використовується для прийому та аналізу даних журналу майже в режимі реального часу та масштабовано. Він також надає важливу оперативну інформацію про показники журналу для стимулювання дій.
- Показники інфраструктури та моніторинг контейнерів — Багато компаній використовують стек ELK для аналізу різних показників. Це може включати збір даних за кількома параметрами продуктивності, які залежать від випадку використання.
- Аналітика безпеки — Ще одним основним аналітичним додатком Elasticsearch є аналіз безпеки. Журнали доступу та подібні журнали, що стосуються безпеки системи, можна аналізувати за допомогою стека ELK, забезпечуючи більш повну картину того, що відбувається у ваших системах у режимі реального часу.
- Бізнес-аналітика — Багато вбудованих функцій, доступних у стеку ELK, роблять його хорошим варіантом як інструмент бізнес-аналітики.
Приклади використання компаніями.
-
Netflix
Netflix покладається на стек ELK у різних випадках використання для моніторингу та аналізу операцій обслуговування клієнтів та журналів безпеки. Наприклад, Elasticsearch є основним рушієм їхньої системи обміну повідомленнями. Крім того, компанія вибрала Elasticsearch за його автоматичне шардування та реплікацію, гнучку схему, приємну модель розширення та екосистему з багатьма плагінами. Netflix постійно збільшував використання Elasticsearch з кількох ізольованих розгортань до більш ніж десятка кластерів, що складаються з декількох сотень вузлів.
-
Ebay
З незліченною кількістю критично важливих для бізнесу випадків використання текстового пошуку та аналітики, які використовують Elasticsearch як основу, eBay створив спеціальну платформу «Elasticsearch-as-a-Service», щоб забезпечити легке надання кластера Elasticsearch на своїй внутрішній хмарній платформі на основі OpenStack.
-
Walmart
Walmart використовує Elastic Stack, щоб розкрити прихований потенціал своїх даних, щоб отримати уявлення про моделі покупок клієнтів, відстежувати показники ефективності магазину та аналітику свят — і все це майже в режимі реального часу. Він також використовує функції безпеки ELK як SSO, попередження про виявлення аномалій та моніторинг для DevOps
На закінчення
Отже, що таке Elasticsearch? У цій публікації ми спробували відповісти на це питання через призму розуміння того, що це таке, як воно працює і як воно використовується, і ми все ще ледве ледве-ледве торкнулись лише поверхні у вивченні. Але виходячи з того, що ми розглянули, ми можемо коротко підсумувати, що Elasticsearch за своєю суттю є пошуковою системою, чия базова архітектура та компоненти роблять її швидкою та масштабованою, сидячи в основі екосистеми додаткових інструментів, які разом можна використовувати для багатьох випадків, включаючи пошук, аналітику, обробку та зберігання даних. Якщо вам цікаво дізнатися більше про Elasticsearch і спробувати його на собі, можете звернутись до партнера Elastic – компанії Ідеалсофт, замовити презентацію чи пілотний проект.
Тож, вдалого пошуку!