Elasticsearch to rozproszony silnik wyszukiwania i analityki zbudowany na bibliotece Apache Lucene. W skrócie: wrzucasz do niego dane (najczęściej jako dokumenty JSON), a on indeksuje je tak, żebyś mógł je przeszukiwać pełnotekstowo i agregować w milisekundach, nawet gdy masz ich miliardy. Komunikujesz się z nim przez REST API i JSON, więc nie musisz znać Javy, w której jest napisany.
Jak to działa i do czego służy
Sercem jest odwrócony indeks (inverted index) z Lucene — zamiast skanować każdy dokument w poszukiwaniu słowa, Elasticsearch trzyma mapę „słowo → dokumenty, w których występuje”. Dlatego wyszukiwanie pełnotekstowe jest tak szybkie. Dane dzielisz na indeksy, te na shardy (kawałki rozrzucone po węzłach klastra), a każdy shard ma repliki dla odporności na awarie. To właśnie owo „rozproszenie” pozwala skalować się poziomo: dorzucasz węzły, a klaster rozkłada na nie obciążenie.
Typowe zastosowania to wyszukiwarka w sklepie czy aplikacji, analityka logów (słynny stack ELK: Elasticsearch + Logstash + Kibana), monitoring metryk, obserwowalność i ostatnio wyszukiwanie wektorowe (semantyczne, pod aplikacje AI/RAG).
Przykład z praktyki
Najprostszy scenariusz: indeksujesz produkty i szukasz. Dodanie dokumentu:
PUT /produkty/_doc/1 {"nazwa": "klawiatura mechaniczna", "cena": 299}
A wyszukanie po nazwie:
GET /produkty/_search {"query": {"match": {"nazwa": "klawiatura"}}}
Zwykle nie strzelasz tych komend ręcznie — robi to za Ciebie Kibana (Dev Tools) albo oficjalny klient w Twoim języku, np. elasticsearch-py czy klient dla Node.js.
Na co uważać
Kilka min, na które łatwo wdepnąć:
- Liczby shardów nie zmienisz po fakcie dla istniejącego indeksu — zaplanuj ją wcześniej, bo „za dużo małych shardów” potrafi zarżnąć klaster.
- To nie baza danych do transakcji. Elasticsearch jest „near real-time” — nowy dokument bywa widoczny dopiero po odświeżeniu (domyślnie co sekundę). Nie ma też transakcji ACID jak w PostgreSQL.
- Mapping ma znaczenie. Pole
textjest analizowane (dzielone na tokeny), akeywordnie — pomyłka i sortowanie albo filtrowanie nagle nie działa tak, jak myślisz. - Licencja się zmieniała: od 2021 to SSPL/Elastic License, a od 2024 doszło też AGPL. Dla większości projektów to bez różnicy, ale warto wiedzieć. Istnieje też fork OpenSearch od AWS.
Pojęcia powiązane: Apache Lucene, Kibana, Logstash, stack ELK, OpenSearch, odwrócony indeks, sharding, wyszukiwanie wektorowe, full-text search.