Cała oryginalna treść jest tworzona po ukraińsku. Nie wszystkie treści zostały jeszcze przetłumaczone. Niektóre posty mogą być dostępne tylko po ukraińsku.Dowiedz się więcej
Ta treść została automatycznie przetłumaczona z ukraińskiego.
Elasticsearch - to system wyszukiwania i analityki, stworzony na bazie Lucene. Często nazywany jest "Google w twojej infrastrukturze" (w sensie - potężny system wyszukiwania), ponieważ potrafi błyskawicznie znajdować informacje w ogromnych zbiorach danych - logach, tekstach, metrykach, dokumentach, produktach itd.

Jak działa Elasticsearch pod maską

Indeksowanie zamiast zwykłego przechowywania
Dane nie są po prostu umieszczane "w tabeli", jak w SQL, ale indeksowane: tekst jest dzielony na tokeny, normalizowany i przekształcany w indeks odwrócony. Dzięki temu wyszukiwanie działa w milisekundy, nawet w przypadku milionów dokumentów.
Skalowanie
Elasticsearch został zaprojektowany jako system rozproszony. Jego główną cechą jest łatwe poziome skalowanie.
Shardy - kawałki indeksu
Każdy indeks dzieli się na części (shardy), a każdy shard to osobna maszyna wyszukiwania Lucene. Mogą one działać na różnych serwerach.
Repliki - kopie dla szybkości i niezawodności
Każdy shard może mieć kopie. Oznacza to:
  • system nie pada, jeśli jeden serwer ulegnie awarii
  • odczyt staje się szybszy, ponieważ kopie również odpowiadają na zapytania
Poziome skalowanie
Aby zwiększyć wydajność lub ilość danych, wystarczy dodać nowy węzeł. Elasticsearch samodzielnie rozdzieli shardy i zbalansuje klaster.
Rozproszone wyszukiwanie
Kiedy przychodzi zapytanie, węzeł koordynujący wysyła je do wszystkich shardów, zbiera wyniki i zwraca odpowiedź. Wyszukiwanie odbywa się równolegle - dlatego ES jest tak szybki.

Elasticsearch w logowaniu: co to jest ELK Stack

Jednym z najpopularniejszych zastosowań ES jest logowanie. W tym celu istnieje stos:
E - Elasticsearch
Przechowuje i indeksuje wszystkie logi.
L - Logstash
Przetwarza logi: odczytuje, filtruje, parsuje, strukturyzuje i wysyła do Elasticsearch.
K - Kibana
Wizualizacja: wyszukiwanie logów, wykresy, filtry, pulpity nawigacyjne. To sprawia, że analiza logów jest wygodna i przejrzysta.
ELK używa się do:
  • wyszukiwania błędów
  • analizy zachowań systemów
  • rozumienia szczytów obciążenia
  • cyberbezpieczeństwa
  • audyty

Analiza i monitoring: Kibana + Beats

Oprócz logów, Elasticsearch coraz częściej stosuje się do metryk i monitoringu.
Beats - lekkie agenty, które wysyłają dane:
  • Filebeat - pliki logów
  • Metricbeat - CPU, RAM, sieć
  • Packetbeat - ruch
  • Heartbeat - dostępność usług
  • Auditbeat - zdarzenia bezpieczeństwa
Wysyłają dane do Elasticsearch, a Kibana pozwala tworzyć pulpity nawigacyjne, oglądać obciążenie systemów, analizować zapytania API, znajdować wolne usługi.
Elasticsearch — to nie tylko wyszukiwanie. To rozproszony indeksator, który:
  • błyskawicznie przeszukuje tekst
  • łatwo się skaluje
  • zapewnia odporność na awarie
  • obsługuje analitykę i agregacje
  • stanowi podstawę popularnych stosów do logów i monitoringu (ELK, Beats)
W świecie big data Elasticsearch jest jednym z najwygodniejszych narzędzi do szybkiego znajdowania, filtrowania i analizowania wszelkich informacji.

Czy można używać Elasticsearch jako bazy danych

Elasticsearch sam w sobie jest bazą danych. Nie korzysta z MySQL, PostgreSQL ani żadnej innej zewnętrznej bazy danych. Wszystkie dane są przechowywane w postaci dokumentów JSON, a fizyczne przechowywanie i indeksowanie zapewnia Lucene.
Rzeczywiście można go używać jako głównej bazy danych, ale tylko w przypadkach, gdy kluczowa jest szybkość wyszukiwania i analityki. Może to być katalog produktów, system logów, przechowywanie zdarzeń analitycznych lub danych czasowych. Jednak Elasticsearch nie jest pełnoprawnym zamiennikiem tradycyjnych baz relacyjnych. Brakuje mu klasycznych ACID-transakcji, powiązań między encjami, ścisłej kontroli spójności oraz natychmiastowej widoczności zapisów w wyszukiwarce. Aktualizacje dokumentów są realizowane jako usunięcia i ponowna indeksacja, a usunięcia są stosowane nie od razu, ale podczas wewnętrznych optymalizacji.
Dlatego Elasticsearch warto używać jako szybkiej warstwy wyszukiwania i analityki, osobnej bazy danych do danych czasowych lub głównego magazynu logów. Dla operacji finansowych, transakcji, złożonych powiązań i krytycznie spójnych danych lepiej nadają się tradycyjne bazy danych - PostgreSQL, MySQL itd.

Ten post nie ma jeszcze żadnych dodatków od autora.

is_a?, kind_of?, instance_of? — jak Ruby sprawdza typ obiektu?
30 paź 19:55

is_a?, kind_of?, instance_of? — jak Ruby sprawdza typ obiektu?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
&& vs and — różnica w Ruby, która może zepsuć twój kod
30 paź 20:23

&& vs and — różnica w Ruby, która może zepsuć twój kod

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Zmienne w Ruby: @, @@ oraz zmienna instancji klasy
30 paź 20:54

Zmienne w Ruby: @, @@ oraz zmienna instancji klasy

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Różnica między blank?, present?, empty? a nil? w Ruby
30 paź 21:06

Różnica między blank?, present?, empty? a nil? w Ruby

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Czym jest Middleware w Ruby on Rails i kiedy jest używane
4 lis 10:39

Czym jest Middleware w Ruby on Rails i kiedy jest używane

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Czym jest podejście Vanilla Rails?
14 lis 16:48

Czym jest podejście Vanilla Rails?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Czym jest baza danych typu time-series?
22 lis 12:42

Czym jest baza danych typu time-series?

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

Co to jest VACUUM w PostgreSQL?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Czym jest B-Tree (drzewo zrównoważone)?
22 lis 12:58

Czym jest B-Tree (drzewo zrównoważone)?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Fix problem with installing Ruby 3.4.3 (and not only) via RVM on macOS (Apple Silicon)
30 gru 14:05

Fix problem with installing Ruby 3.4.3 (and not only) via RVM on macOS (Apple Silicon)

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Problem Grzmiącego Stada: co to jest i dlaczego łamie produkcję
15 sty 10:14

Problem Grzmiącego Stada: co to jest i dlaczego łamie produkcję

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Czym jest Exponential Backoff i Random Jitter?
15 sty 15:24

Czym jest Exponential Backoff i Random Jitter?

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