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

    Czytaj dalej

    Powiązane artykuły

    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

    Plac Wolności 16

    61-739 Poznań

    Godziny pracy

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

    Wolisz porozmawiać?

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

    Zadzwoń teraz