Spis treściKliknij link, aby przejść do wybranego miejsca
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.