All original content is created in Ukrainian. Not all content has been translated yet. Some posts may only be available in Ukrainian.Learn more
This content has not been translated yet.We're showing the original Ukrainian content below.
Elasticsearch - це система пошуку та аналітики, створена на базі Lucene. Її часто називають "Google всередині вашої інфраструктури" (в сенсі - потужна пошукова система), бо вона вміє миттєво знаходити інформацію в величезних масивах даних - логах, текстах, метриках, документах, товарах тощо.

Як Elasticsearch працює під капотом

Індексація замість звичайного зберігання
Дані не просто кладуться "в таблицю", як у SQL, а індексуються: текст розбивається на токени, нормалізується і перетворюється на інвертований індекс. Завдяки цьому пошук працює за мілісекунди навіть по мільйонах документів.
Масштабування
Elasticsearch спроєктований як розподілена система. Його головна фішка -- легке горизонтальне масштабування.
Shards - шматки індексу
Кожен індекс ділиться на частини (shards), і кожен shard - це окрема пошукова машина Lucene. Вони можуть жити на різних серверах.
Replicas - копії для швидкості та надійності
Кожен shard може мати копії. Це означає:
  • система не падає, якщо один сервер вийшов з ладу
  • читання стає швидшим, бо копії також відповідають на запити
Горизонтальне масштабування
Щоб збільшити продуктивність або кількість даних, достатньо просто додати нову ноду. Elasticsearch сам розподілить shards і збалансує кластер.
Розподілений пошук
Коли надходить запит, нода-координатор надсилає його на всі shards, збирає результати та повертає відповідь. Пошук виконується паралельно - саме тому ES такий швидкий.

Elasticsearch у логуванні: що таке ELK Stack

Одне з найпопулярніших застосувань ES - це логування. Для цього існує стек:
E - Elasticsearch
Зберігає та індексує всі логи.
L - Logstash
Обробляє логи: читає, фільтрує, парсить, структурує й відправляє в Elasticsearch.
K - Kibana
Візуалізація: пошук логів, графіки, фільтри, дашборди. Це робить аналіз логів зручним і наочним.
ELK використовують для:
  • пошуку помилок
  • аналізу поведінки систем
  • розуміння піків навантаження
  • кібербезпеки
  • аудиту

Аналітика та моніторинг: Kibana + Beats

Окрім логів, Elasticsearch все частіше використовують для метрик і моніторингу.
Beats - легкі агенти, які надсилають дані:
  • Filebeat - лог-файли
  • Metricbeat - CPU, RAM, мережа
  • Packetbeat - трафік
  • Heartbeat - доступність сервісів
  • Auditbeat - події безпеки
Вони відправляють дані у Elasticsearch, а Kibana дозволяє будувати дашборди, дивитись завантаженість систем, аналізувати API-запити, знаходити повільні сервіси.
Elasticsearch — це не просто пошук. Це розподілений індексатор, який:
  • блискавично шукає по тексту
  • легко масштабується
  • забезпечує відмовостійкість
  • підтримує аналітику й агрегації
  • лежить в основі популярних стеків для логів і моніторингу (ELK, Beats)
У світі великих даних Elasticsearch - один із найзручніших інструментів, щоб швидко знаходити, фільтрувати та аналізувати будь-яку інформацію.

Чи можна використовувати Elasticsearch як базу даних

Elasticsearch сам по собі є базою даних. Він не використовує MySQL, PostgreSQL чи будь-яку іншу зовнішню СУБД. Всі дані зберігаються у вигляді JSON-документів, а фізичне зберігання та індексацію забезпечує Lucene.
Його дійсно можна використовувати як основну базу даних, але лише у випадках, коли центральною є швидкість пошуку та аналітики. Це може бути каталог товарів, система логів, зберігання аналітичних подій або time-series даних. Проте Elasticsearch не є повноцінною заміною для традиційних реляційних баз. У ньому немає класичних ACID-транзакцій, зв’язків між сутностями, строгого контролю консистентності та миттєвої видимості записів у пошуку. Оновлення документів реалізовані як видалення й повторна індексація, а видалення застосовуються не одразу, а під час внутрішніх оптимізацій.
Тому Elasticsearch доцільно використовувати як швидкий пошуковий та аналітичний шар, окрему time-series БД або основне сховище логів. Для фінансових операцій, транзакцій, складних зв’язків та критично консистентних даних краще підходять традиційні СУБД - PostgreSQL, MySQL тощо.

This post doesn't have any additions from the author yet.

is_a?, kind_of?, instance_of? — як Ruby перевіряє тип об’єкта?
30 Oct 19:55

is_a?, kind_of?, instance_of? — як Ruby перевіряє тип об’єкта?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
&& vs and — різниця в Ruby, яка може зламати ваш код
30 Oct 20:23

&& vs and — різниця в Ruby, яка може зламати ваш код

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Змінні у Ruby: @, @@ та class instance variable
30 Oct 20:54

Змінні у Ruby: @, @@ та class instance variable

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Різниця між blank?, present?, empty? та nil? у Ruby
30 Oct 21:06

Різниця між blank?, present?, empty? та nil? у Ruby

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Що таке Middleware у Ruby on Rails і коли воно використовується
04 Nov 10:39

Що таке Middleware у Ruby on Rails і коли воно використовується

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Що таке Vanilla Rails approach?
14 Nov 16:48

Що таке Vanilla Rails approach?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Що таке time-series база даних?
22 Nov 12:42

Що таке time-series база даних?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
22 Nov 12:49

Що таке VACUUM у PostgreSQL?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Що таке B-Tree (Balanced Tree)?
22 Nov 12:58

Що таке B-Tree (Balanced Tree)?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska