Definicja #
Elasticsearch to dystrybuowana wyszukiwarka i silnik analityczny oparty na bibliotece Apache Lucene, rozwijany przez firmę Elastic. Przechowuje dane w formacie JSON jako dokumenty i udostępnia pełne REST API do indeksowania i wyszukiwania.
Kluczowe cechy Elasticsearch:
- Full-text search — zaawansowane wyszukiwanie pełnotekstowe z analizą językową, tokenizacją, stemming i relevance scoring
- Dystrybucja i skalowalność — dane automatycznie podzielone na shardy (odłamki) dystrybuowane po węzłach klastra; repliki zapewniają wysoką dostępność
- JSON REST API — wszystkie operacje (indeksowanie, wyszukiwanie, agregacje) realizowane przez HTTP
- Near real-time (NRT) — dokumenty dostępne do wyszukiwania niemal natychmiast po zaindeksowaniu (opóźnienie rzędu sekund)
- Agregacje — potężny silnik analityczny do grupowania, statystyk, histogramów i pipeline'ów analitycznych
- Query DSL — bogaty język zapytań JSON do filtrowania, sortowania i wyszukiwania złożonych warunków
Stos ELK (Elastic Stack):
- Elasticsearch — przechowywanie i wyszukiwanie danych
- Logstash — zbieranie, parsowanie i przesyłanie danych (pipeline ETL)
- Kibana — wizualizacja danych i dashboardy w przeglądarce
- Beats — lekkie agenty zbierające dane (Filebeat, Metricbeat)
Zastosowania #
Elasticsearch stosuje się do:
- Wyszukiwania pełnotekstowego w aplikacjach — autouzupełnianie, wyszukiwanie produktów w e-commerce, wyszukiwanie dokumentów z relevance ranking
- Centralizacji i analizy logów — zbieranie logów z mikroserwisów i aplikacji do jednego miejsca z ELK Stack
- Monitoringu infrastruktury — metryki serwerów, alerting na podstawie anomalii w danych
- Analizy bezpieczeństwa (SIEM) — wykrywanie zagrożeń, korelacja zdarzeń bezpieczeństwa
- Analityki biznesowej w czasie rzeczywistym — agregacje na milionach rekordów z latencją poniżej sekundy
Ścieżka nauki #
Elasticsearch wymaga znajomości podstaw HTTP i formatu JSON. Warto zacząć od postawienia lokalnej instancji przez Docker.
Zacznij od:
- Uruchomienie Elasticsearch lokalnie:
docker run -p 9200:9200 elasticsearch:8.x - Podstawowe operacje REST: indeksowanie dokumentu (PUT/POST), pobieranie (GET), wyszukiwanie (POST /_search)
- Query DSL:
match,term,bool(must/should/filter),range - Mappings i typy danych:
text(full-text),keyword(exact match),date,nested
Następnie poznaj:
- Agregacje — terms, date_histogram, stats, pipeline aggregations
- Stos ELK — konfiguracja Logstash i Kibana, tworzenie dashboardów
- Administracja klastrem — shardy, repliki, cluster health, indeks policies (ILM)
- Bezpieczeństwo — TLS, uwierzytelnienie użytkowników, role-based access control (RBAC)
- Klienty programistyczne: oficjalne SDK dla Java, Python, .NET, JavaScript
FAQ #
- Czym różni się Elasticsearch od relacyjnej bazy danych?
- Relacyjna baza danych (SQL) przechowuje dane w tabelach i jest zoptymalizowana pod transakcje i spójność. Elasticsearch przechowuje dokumenty JSON i jest zoptymalizowany pod full-text search i agregacje analityczne. Elasticsearch nie gwarantuje ACID — nie zastępuje SQL, lecz uzupełnia go jako warstwa wyszukiwania.
- Co to jest ELK Stack?
- ELK Stack to trójka narzędzi: Elasticsearch (przechowywanie i wyszukiwanie), Logstash (zbieranie i parsowanie danych) i Kibana (wizualizacja). Dziś Elastic Stack obejmuje też Beats — lekkie agenty zbierające dane z serwerów.
- Czy Elasticsearch jest darmowy?
- Elasticsearch jest open-source na licencji Elastic License 2.0 (od wersji 7.11). Wersja podstawowa jest darmowa. Elastic Cloud (zarządzany hosting) jest płatny. Istnieje też fork OpenSearch (Amazon), rozwijany jako w pełni open-source pod licencją Apache 2.0.
- Ile zarabia specjalista Elasticsearch?
- Inżynier ze znajomością Elasticsearch i ELK Stack zarabia w Polsce od 12 000 do 22 000 zł brutto. Umiejętność jest szczególnie ceniona w rolach DevOps, SRE i Data Engineering.