encyklopedia.space

Elasticsearch

Elasticsearch to otwarto‑źródłowy silnik wyszukiwania i analizy danych oparty na bibliotece Apache Lucene. Został zaprojektowany z myślą o obsłudze dużych wolumenów danych w czasie rzeczywistym, zapewniając jednocześnie wysoką skalowalność, dostępność oraz możliwości pełnotekstowego przeszukiwania.

Historia

Projekt Elasticsearch powstał w 2010 roku w firmie Elastic NV jako część szerszego ekosystemu znanego dziś jako Elastic Stack. Pierwsza wersja 1.0 została wydana w 2012 roku, a od tego czasu silnik jest intensywnie rozwijany i utrzymywany przez społeczność oprogramowania open source pod licencją Apache License 2.0.

Architektura

Elasticsearch jest zbudowany w modelu klastra, w którym podstawową jednostką jest node (węzeł). Węzły grupują się w shardy, które mogą być replikowane w celu zapewnienia wysokiej dostępności. Każdy shard jest samodzielną instancją Lucene, co umożliwia równoległe przetwarzanie zapytań.

  • Cluster – zestaw węzłów współpracujących ze sobą.
  • Node – pojedynczy proces Elasticsearch, najczęściej uruchamiany na Linuksie, Windows lub macOS.
  • Shard – podział indeksu, pozwala rozkładać obciążenie na wiele węzłów.
  • Replica – kopia sharda służąca do odtwarzania w razie awarii i zwiększania wydajności odczytu.

Funkcje

Elasticsearch oferuje szereg zaawansowanych możliwości:

  • Pełnotekstowe wyszukiwanie z obsługą języka naturalnego, stemmingu i analizatorów.
  • Zapytania w formacie JSON poprzez interfejs REST.
  • Agregacje – potężne operacje analityczne (sumy, średnie, histogramy, geo‑agregacje).
  • Wbudowane wsparcie dla danych geoprzestrzennych i geoposition.
  • Wyszukiwanie przybliżone (fuzzy search) i sugestie (autocomplete).
  • Rozproszone przetwarzanie danych w czasie rzeczywistym.

Zastosowania

Elasticsearch znajduje zastosowanie w wielu dziedzinach:

  • Logowanie i monitorowanie – w połączeniu z Logstash i Kibana tworzy potężny stos do analizy logów (ELK Stack).
  • Wyszukiwarki internetowe i wewnętrzne systemy wyszukiwania.
  • Analiza danych w czasie rzeczywistym – np. monitorowanie metrów w aplikacjach IoT.
  • Systemy rekomendacyjne i personalizacja treści.
  • Wspomaganie bezpieczeństwa – wykrywanie anomalii i zagrożeń.

Integracje i ekosystem

Elasticsearch jest centralnym elementem Elastic Stack. Najważniejsze komponenty to:

  • Logstash – narzędzie do zbierania, przetwarzania i przesyłania danych.
  • Kibana – interfejs graficzny do wizualizacji i eksploracji danych.
  • Beats – lekka rodzina agentów do przesyłania danych z różnych źródeł.

Wersje i rozwój

Od pierwszej wersji, Elasticsearch przechodził liczne aktualizacje, wprowadzając m.in. funkcje bezpieczeństwa, zarządzanie zasobami i optymalizacje wydajności. Najnowsze wydania (np. 8.x) skupiają się na:

Przykładowe zapytanie

GET /produkty/_search
{
  "query": {
    "match": {
      "opis": "wysoka jakość"
    }
  },
  "aggs": {
    "ceny": {
      "stats": {
        "field": "cena"
      }
    }
  }
}

Powyższe zapytanie wyszukuje w indeksie produkty dokumenty, w których pole opis zawiera frazę „wysoka jakość”, oraz zwraca statystyki cen.

Zobacz także

Bibliografia

Informacje w niniejszym artykule pochodzą z oficjalnej dokumentacji Elasticsearch, publikacji technicznych oraz artykułów naukowych dostępnych w ramach otwartego dostępu.