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

Elasticsearch

Wyszukiwanie produktów

E-commerce: full-text search, faceted navigation (filtry po kategoriach/cenie), autocomplete, relevance tuning.

ELK Stack

Centralne logowanie

Zbieranie logów z mikroserwisów → Filebeat → Logstash → Elasticsearch → Kibana dashboardy.

Elastic Observability

APM / Observability

Monitorowanie wydajności aplikacji — traces, metrics, logs w jednym miejscu. Elastic APM agent.

Elastic Security

Security SIEM

Wykrywanie zagrożeń, analiza zdarzeń bezpieczeństwa, compliance reporting. Elastic SIEM.

Elasticsearch

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ę.

Kontakt

Skontaktuj się z nami

Porozmawiajmy o Twoim projekcie. Bezpłatna wycena w ciągu 24 godzin.

Wyślij zapytanie

Bezpłatna wycena w 24h
Bez zobowiązań
Indywidualne podejście
Ekspresowa realizacja

Telefon

+48 790 814 814

Pon-Pt: 9:00 - 18:00

Email

adam@fotz.pl

Odpowiadamy w ciągu 24h

Adres rejestrowy

Poznańska 117/11

62-023 Kamionki · obsługa zdalna

Godziny pracy

Pon - Pt9:00 - 18:00
Sob - NdzZamknięte

Wolisz porozmawiać?

Zadzwoń teraz i porozmawiaj z naszym specjalistą o Twoim projekcie.

Zadzwoń teraz