Elasticsearch — co to jest i jak działa?
Elasticsearch to rozproszony silnik wyszukiwania oparty na Apache Lucene. Poznaj inverted index, Query DSL, agregacje i jak budować ELK Stack do logowania.
Czym jest Elasticsearch?
Elasticsearch to rozproszony silnik wyszukiwania i analityki oparty na Apache Lucene. Przechowuje dane jako dokumenty JSON, oferuje pełnotekstowe wyszukiwanie z relevance scoring, agregacje analityczne w czasie rzeczywistym i skalowanie horyzontalne.
Elasticsearch jest używany przez Wikipedia (wyszukiwanie), GitHub (code search), LinkedIn (wyszukiwanie profili), Stack Overflow i setki tysięcy firm do wyszukiwania, logowania i analityki. Część stosu ELK (Elasticsearch, Logstash, Kibana).
2010
Rok powstania. Stworzony przez Shay Banona jako open-source silnik wyszukiwania oparty na Lucene.
NRT
Near Real-Time — dokumenty dostępne do wyszukiwania niemal natychmiast po indeksowaniu (1 sekunda)
REST API
Wszystkie operacje przez REST API z JSON — indeksowanie, wyszukiwanie, administracja klastra
Kluczowe pojęcia Elasticsearch
Index
Kolekcja dokumentów o podobnej strukturze — odpowiednik bazy danych lub tabeli. Podzielony na shardy.
logs-2024-01, products, users
Document
Podstawowa jednostka informacji — JSON object przechowywany w indeksie. Ma unikalny _id.
{ "_id": "1", "title": "TypeScript guide", "views": 1500 }
Shard
Fragment indeksu — instancja Apache Lucene. Primary shard obsługuje zapisy, replica shard — kopie.
index z 3 primary shards + 1 replica = 6 shardów
Mapping
Definicja struktury dokumentów w indeksie — typy pól (text, keyword, integer, date). Jak schema w SQL.
title: text, price: float, tags: keyword, created_at: date
Analyzer
Pipeline przetwarzania tekstu: Character Filter → Tokenizer → Token Filters. Definiuje jak tekst jest indeksowany.
standard analyzer: tokenize + lowercase. polish analyzer: stemming PL
Query DSL
JSON-based język zapytań. Match, term, range, bool (must/should/must_not/filter), aggregations.
{ "query": { "match": { "title": "elasticsearch" } } }
Query DSL — przykłady
Full-text search z filtrami
POST /products/_search
{
"query": {
"bool": {
"must": [
{ "match": { "description": "laptop gaming" } }
],
"filter": [
{ "term": { "in_stock": true } },
{ "range": { "price": { "gte": 1000, "lte": 5000 } } }
]
}
},
"sort": [{ "_score": "desc" }, { "price": "asc" }],
"size": 20
}
Agregacje (Analytics)
POST /orders/_search
{
"size": 0,
"aggs": {
"revenue_per_month": {
"date_histogram": {
"field": "created_at",
"calendar_interval": "month"
},
"aggs": {
"total_revenue": {
"sum": { "field": "amount" }
},
"avg_order": {
"avg": { "field": "amount" }
}
}
}
}
}
Fuzzy Search i Autocomplete
POST /products/_search
{
"query": {
"multi_match": {
"query": "laptpo gaming",
"fields": ["title^3", "description"],
"fuzziness": "AUTO",
"type": "best_fields"
}
}
}
// Autocomplete z edge_ngram tokenizer
POST /products/_search
{
"query": {
"match": {
"title.autocomplete": { "query": "lapt" }
}
}
}
Zastosowania Elasticsearch
Wyszukiwanie produktów
E-commerce: full-text search, faceted navigation (filtry po kategoriach/cenie), autocomplete, relevance tuning.
Centralne logowanie
Zbieranie logów z mikroserwisów → Filebeat → Logstash → Elasticsearch → Kibana dashboardy.
APM / Observability
Monitorowanie wydajności aplikacji — traces, metrics, logs w jednym miejscu. Elastic APM agent.
Security SIEM
Wykrywanie zagrożeń, analiza zdarzeń bezpieczeństwa, compliance reporting. Elastic SIEM.
Geospatial Analytics
Analiza danych geolokalizacyjnych — geo_point, geo_shape, Geo Tile Aggregation dla map.
FAQ — Elasticsearch
Co to jest Elasticsearch?
Elasticsearch to open-source'owy, rozproszony silnik wyszukiwania i analityki oparty na Apache Lucene. Stworzony przez Shay Banona w 2010 roku i open-sourcowany przez Elastic. Elasticsearch przechowuje dane jako dokumenty JSON w indeksach, oferuje pełnotekstowe wyszukiwanie (full-text search), analizy agregacyjne w czasie rzeczywistym, skalowanie horyzontalne przez sharding i wysoką dostępność przez replikację. Często używany jako część stosu ELK (Elasticsearch, Logstash, Kibana).
Czym różni się Elasticsearch od tradycyjnej bazy danych?
Elasticsearch jest zoptymalizowany pod wyszukiwanie i analizę, nie jako primary data store. Różnice: Full-text search (inverted index, relevance scoring) vs proste LIKE w SQL; Skalowanie horyzontalne (sharding) vs verticale SQL; Niemal real-time (NRT) wyszukiwanie po indeksowaniu (1s delay); Schema-flexible (mapping) vs rigid SQL schema; Agregacje analityczne (facets, histogramy, percentyle) zamiast GROUP BY; Brak pełnych transakcji ACID. Najczęściej używany jako secondary store obok PostgreSQL/MySQL.
Jak działa indeksowanie w Elasticsearch?
Elasticsearch używa inverted index (odwrócony indeks) — struktura mapuje terminy (słowa) na dokumenty które je zawierają. Podczas indeksowania: text jest tokenizowany (dzielony na słowa), normalizowany (lowercase, stemming, usuwanie stopwords), zapisywany w inverted index. Szukając 'szybka wyszukiwarka' — Elasticsearch szuka dokumentów zawierających oba terminy, oblicza TF-IDF lub BM25 score relevance i zwraca posortowane wyniki. Index = zbiór shardów, shard = instancja Lucene.
Co to jest ELK Stack?
ELK Stack (teraz Elastic Stack) to zestaw narzędzi do zbierania, przetwarzania, przechowywania i wizualizacji logów: Elasticsearch — przechowywanie i wyszukiwanie dokumentów; Logstash — pipeline do zbierania i transformacji logów (input, filter, output); Kibana — web UI do wizualizacji danych, dashboardy, Discover, alerting; Beats (Filebeat, Metricbeat, Packetbeat) — lekkie agenty zbierające dane. ELK Stack to standard do centralnego zarządzania logami i monitoringu infrastruktury.
Jak skaluje się Elasticsearch?
Elasticsearch skaluje przez Cluster → Node → Index → Shard. Cluster to zbiór węzłów (node). Index dzielony na Primary Shards (domyślnie 1, wcześniej 5 — niezmienialny po utworzeniu) i Replica Shards (kopie primary, zwiększa dostępność i odczyt). Autoskalowanie: Elastic Cloud oferuje autoscaling. Dla dużych deploymentów: data tiers (hot/warm/cold/frozen) — najczęstszy dostęp na szybkich dyskach (hot), starsze dane na tańszym storage (cold). Index Lifecycle Management (ILM) automatyzuje rollover i migrację.
Powiązane artykuły
Skontaktuj się z nami
Porozmawiajmy o Twoim projekcie. Bezpłatna wycena w ciągu 24 godzin.
Wyślij zapytanie
Telefon
+48 790 814 814
Pon-Pt: 9:00 - 18:00
adam@fotz.pl
Odpowiadamy w ciągu 24h
Adres
Plac Wolności 16
61-739 Poznań
Godziny pracy
Wolisz porozmawiać?
Zadzwoń teraz i porozmawiaj z naszym specjalistą o Twoim projekcie.
Zadzwoń teraz