← StartseiteProgrammierung (Програмування)

Elasticsearch, OpenSearch und Alternativen: vollständige Übersicht

Stellen Sie sich vor, Sie haben eine Million Dokumente. Sie möchten alle finden, in denen das Wort „Kaffee“ vorkommt, aber nur die, in denen es im Kontext von „Zubereitung“ und nicht von „Laden“ verwendet wird. Und da...

InhaltsverzeichnisKlicke auf den Link, um zur gewünschten Stelle zu navigieren
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
Stellen Sie sich vor, Sie haben eine Million Dokumente. Sie möchten alle finden, in denen das Wort „Kaffee“ vorkommt, aber nur die, in denen es im Kontext von „Zubereitung“ und nicht von „Laden“ verwendet wird. Und das Ganze soll nach Relevanz sortiert werden. Und das alles in 50 Millisekunden.
Eine relationale Datenbank wird hier versagen. Sie kann WHERE body LIKE '%Kaffee%' - aber das ist ein kompletter Brute-Force-Versuch, ohne Sprachverständnis, ohne Ranking, ohne Fehlerresistenz. Bei einer Million Datensätze würde das Sekunden dauern. Bei einer Milliarde Minuten.
Deshalb gibt es Suchmaschinen - spezialisierte Systeme, die um eine Idee herum aufgebaut sind: die Suche in großen Textmengen schnell, flexibel und intelligent zu gestalten.

Elasticsearch: De-facto-Standard

Elasticsearch ist eine verteilte Suchmaschine und Analytikplattform, die auf Apache Lucene basiert. Lucene ist eine Java-Bibliothek, die seit 1999 existiert und klassische Informationssuchalgorithmen implementiert. Elasticsearch wurde 2010 als benutzerfreundliche HTTP-Schicht über Lucene mit Clusterunterstützung eingeführt.

Wie es intern funktioniert

Im Kern steht das Konzept des invertierten Indexes. Anstatt für jedes Dokument seinen Text zu speichern und darin zu suchen, erstellt das System ein Wörterbuch: „welches Wort - in welchen Dokumenten kommt es vor“. Das ist ähnlich wie ein Sachverzeichnis in einem Buch.
"Kaffee"         → [doc_3, doc_7, doc_42, doc_100]
"Zubereitung" → [doc_7, doc_15, doc_42]
Bei der Anfrage „Zubereitung von Kaffee“ findet das System den Schnitt der Mengen in Millisekunden - unabhängig von der Größe der Sammlung.
Darüber hinaus fügt Elasticsearch hinzu:
  • Analyzer - Textverarbeitungs-Pipelines: Tokenisierung, Stoppwortentfernung, Stemming (Reduzierung auf den Stamm), Transliteration.
  • Scoring - Der BM25-Algorithmus (früher TF-IDF) weist jedem Ergebnis eine numerische Relevanzbewertung zu.
  • Shards und Replikate - Der Index wird in Teile (Shards) aufgeteilt, die auf die Knoten des Clusters verteilt werden. Replikate sorgen für Fehlertoleranz.
  • REST API - Alle Interaktionen erfolgen über JSON über HTTP. Keine spezifischen Client-Protokolle.

Was Elasticsearch gut kann

Volltextsuche - das ist offensichtlich. Aber nebenbei:
Aggregation - Echtzeitanalytik. „Wie viele Bestellungen gab es in jeder Stadt in den letzten 7 Tagen, auf Stunden aufgeteilt?“ - eine Anfrage, sofortige Antwort.
Geo-Suche - „Finde alle Cafés im Umkreis von 2 km von den Koordinaten“. Elasticsearch unterstützt geospatial Indizes nativ.
Vektor-Suche (kNN) - Seit Version 8.x ermöglicht die Unterstützung von dichten Vektoren die Implementierung von semantischer Suche basierend auf Embeddings. Das bedeutet, Dokumente nach Inhalt und nicht nach exakter Wortübereinstimmung zu finden.
Observability Stack (ELK) - Elasticsearch + Logstash + Kibana. Eine klassische Kombination zur Sammlung und Analyse von Logs. Tausende von Unternehmen setzen es zur Überwachung ihrer Infrastruktur ein.

Die dunkle Seite: Lizenzdrama

Im Jahr 2021 änderte Elastic NV die Lizenz von Elasticsearch und Kibana von Apache 2.0 auf SSPL (Server Side Public License) und Elastic License 2.0. Beide Lizenzen verbieten die Bereitstellung von Elasticsearch als Cloud-Service ohne kommerzielle Vereinbarung mit Elastic.
Der Grund: Amazon Web Services startete den Amazon Elasticsearch Service (später in OpenSearch umbenannt) und verdiente faktisch Geld mit fremdem Open-Source-Code, ohne einen Beitrag zurückzuleisten. Elastic beschloss, diese Hintertür zu schließen.
Die Open-Source-Community nahm dies gemischt auf. SSPL wird von den meisten Definitionen von Open Source, einschließlich OSI, abgelehnt. Für viele bedeutete das: Elasticsearch ist nicht mehr wirklich offen.

OpenSearch: Fork von Amazon

Als Reaktion auf die Lizenzänderung forkte AWS im Jahr 2021 Elasticsearch 7.10 (die letzte Version unter Apache 2.0) und schuf OpenSearch. Gleichzeitig wurde Kibana geforkt → OpenSearch Dashboards.
OpenSearch bleibt unter der Apache License 2.0. Amazon bietet es weiterhin als verwalteten Service an - Amazon OpenSearch Service.

Was unterscheidet OpenSearch von Elasticsearch?

Zum Zeitpunkt des Forks - praktisch nichts. Die APIs waren zu 95 % kompatibel. Mit der Zeit divergierten sie:
Аспект Elasticsearch OpenSearch
Ліцензія Elastic License 2.0 / SSPL Apache 2.0
Векторний пошук kNN з версії 8.x k-NN плагін (з ранніх версій)
ML функції Elastic ML (комерційні) ML Commons (відкрито)
Security X-Pack (безкоштовно з 7.x) Security плагін (завжди безкоштовно)
Управління Elastic NV (США) OpenSearch Foundation (Linux Foundation)
Wichtig: Im Jahr 2024 gab Elastic bekannt, dass Elasticsearch wieder unter die AGPL-3.0-Lizenz zurückkehrt - echtes Open Source. Dies ist teilweise eine Antwort auf das Wachstum von OpenSearch. Aber AGPL hat ihre eigenen Einschränkungen für die kommerzielle Nutzung.

Wann OpenSearch wählen?

  • Wenn Sie bereits bei AWS sind und einen verwalteten Service verwenden
  • Wenn Lizenzreinheit wichtig ist (Apache 2.0)
  • Wenn Sie integrierte Sicherheitsfunktionen kostenlos benötigen
  • Wenn Ihr Team nicht von einem kommerziellen Unternehmen abhängig sein möchte

Alternativen: wann Elasticsearch zu viel ist

Elasticsearch ist mächtig, aber auch schwer. Ein minimaler Cluster besteht aus mindestens 3 Knoten, mehreren Gigabyte RAM, komplexer Konfiguration. Für kleine und mittlere Projekte ist das oft übertrieben.

Typesense

Typesense ist eine moderne Suchmaschine, die in C++ geschrieben ist und auf Einfachheit und Geschwindigkeit ausgelegt ist.
Hauptmerkmale:
  • Sofortige Einrichtung: eine Binärdatei, Konfiguration mit 5 Zeilen
  • Typo-Toleranz out of the box - „Café“ findet „Café“, „café“, „кафэ“
  • Vektor-Suche und hybrider Suche (Text + Vektoren)
  • Integrierte Unterstützung für facettierte Suche
  • Lizenz: GPL-3.0 (self-hosted), es gibt einen Cloud-SaaS
Typesense eignet sich hervorragend für die Produktsuche, Artikel, Dokumentation.
Einschränkungen: nicht geeignet für Log-Analytik, keine Aggregationen auf Elasticsearch-Niveau, kleinere Ökosystem.

Meilisearch

Meilisearch ist eine Open-Source (MIT) Suchmaschine in Rust, mit Fokus auf Developer Experience.
# Start in 10 Sekunden
docker run -p 7700:7700 getmeili/meilisearch
curl -X POST 'http://localhost:7700/indexes/movies/documents' \
  -d '[{"id": 1, "title": "Star Wars"}]'
Merkmale:
  • Extrem einfacher REST API
  • Instant Search out of the box
  • Filter, Facetten, Sortierung
  • Mehrsprachige Unterstützung
  • Vektor-Suche (seit Version 1.3)
Einschränkungen: weniger skalierbar als Elasticsearch, nicht geeignet für Petabyte-Daten, eingeschränkte analytische Fähigkeiten.

Solr

Apache Solr ist der „ältere Bruder“ von Elasticsearch. Ebenfalls auf Lucene basierend, wurde 2004 eingeführt. Lange Zeit war es der Industriestandard.
Heute hat Solr in Bezug auf API-Benutzerfreundlichkeit, Dokumentation und cloud-native Funktionen gegenüber Elasticsearch nachgelassen. Aber es gibt Nischen, in denen Solr gewinnt: klassischer Enterprise-Such, sehr komplexe Faceting-Szenarien, Integration mit Hadoop.

PostgreSQL Volltextsuche

Ja, Ihre Lieblingsrelationale Datenbank kann Volltextsuche. Und sie ist nicht schlecht.
SELECT title, ts_rank(search_vector, query) AS rank
FROM articles, to_tsquery('ukrainian', 'suche & motor') query
WHERE search_vector @@ query
ORDER BY rank DESC;
PostgreSQL unterstützt Wörterbücher für verschiedene Sprachen (einschließlich ukrainisch über uk_hunspell), GIN/GiST-Indizes für schnelle Suchen und Ranking nach Relevanz.
Wann ist das ausreichend: bis zu mehreren Millionen Dokumenten, wenn keine Typo-Toleranz und komplexe Aggregationen erforderlich sind, wenn Sie die Infrastruktur minimieren möchten.
Wann nicht ausreichend: große Datenmengen, fuzzy search erforderlich, Synonyme, komplexes Ranking, Echtzeitanalytik.

SQLite FTS5

Für ganz kleine Projekte oder mobile Anwendungen - FTS5 Modul von SQLite. Volltextsuche ohne externe Abhängigkeiten.

Qdrant, Weaviate, Pinecone - Vektordatenbanken

Dies ist eine eigene Klasse von Systemen, die mit der Entwicklung von LLM an Popularität gewinnen. Anstatt nach Schlüsselwörtern zu suchen - Suche nach semantischer Ähnlichkeit über Vektoren (Embeddings).
  • Qdrant (Rust, MIT) - schnell, produktionsbereit, self-hosted oder cloudbasiert.
  • Weaviate (Go, BSD-3) - hybrider Suche + integrierte Integration mit OpenAI/Cohere.
  • Pinecone - cloudbasierter SaaS, am einfachsten einzurichten.
Diese Systeme ersetzen Elasticsearch nicht - sie ergänzen es. Der hybride Ansatz (BM25 + Vektor-Suche) liefert oft die besten Ergebnisse.

Vergleichstabelle

Elasticsearch OpenSearch Typesense Meilisearch PG FTS
Ліцензія Elastic/AGPL Apache 2.0 GPL-3 MIT PostgreSQL
Мова Java Java C++ Rust C
Typo tolerance Так (fuzzy) Так Відмінна Відмінна Ні
Агрегації Розширені Розширені Базові Базові Обмежені
Складність Висока Висока Низька Низька -
RAM (мін.) 1–2 GB 1–2 GB 256 MB 256 MB -
Векторний пошук Так (8.x+) Так Так Так pgvector
Ідеально для Enterprise, logs AWS, відкритість Продукти, docs Стартапи Малі проєкти
Wie wählen?

Wählen Sie Elasticsearch, wenn:
  • Log-Analytik erforderlich ist (ELK-Stack)
  • Skalierung - Dutzende Millionen Dokumente und mehr
  • Komplexe Aggregationen und Kibana-Dashboards benötigt werden
  • Das Team bereit ist, Zeit in die Konfiguration zu investieren
Wählen Sie OpenSearch, wenn:
  • Sie bei AWS sind oder die Lizenz Apache 2.0 wichtig ist
  • Sie dieselbe Funktionalität wie Elasticsearch benötigen
Wählen Sie Typesense oder Meilisearch, wenn:
  • Startup oder mittleres Projekt
  • Priorität - schneller Start und Developer Experience
  • Typo-Toleranz ohne feine Anpassung erforderlich ist
Bleiben Sie bei PostgreSQL FTS, wenn:
  • Weniger als eine Million Dokumente
  • Keine zusätzliche Infrastruktur wünschen
  • Die grundlegende Suchqualität ausreichend ist

Reale Anwendungsfälle aus der Praxis

GitHub verwendet Elasticsearch für die Suche im Code und in Repositories - Milliarden von Dokumenten, Subsekunden-Antwort.
Wikipedia - Elasticsearch für die Suche in Artikeln. Etwa 60 Millionen Seiten, 300+ Sprachen.
Netflix - ELK-Stack zur Analyse von Logs. Petabytes an Daten.
Shopify - Elasticsearch für die Produktsuche in Millionen von Shops.
Gleichzeitig leben Tausende kleinerer Produkte hervorragend auf Meilisearch oder Typesense - und benötigen nicht die Komplexität von Elasticsearch.
Elasticsearch ist das Photoshop unter den Suchmaschinen: extrem leistungsstark, aber mit einer steilen Lernkurve und ernsthaften Systemanforderungen. OpenSearch ist sein lizenzkonformer Zwilling.
Aber 2024–2026 zeigen: Der Wettbewerb lebt. Typesense und Meilisearch holen sich das Publikum im mittleren Segment. Vektordatenbanken eröffnen eine neue Dimension der semantischen Suche. PostgreSQL mit pgvector schleicht sich leise von unten heran.
Die richtige Wahl ist nicht „die leistungsstärkste Lösung“, sondern „die einfachste Lösung, die Ihr Problem löst“. Manchmal ist das Elasticsearch. Manchmal ist es LIKE '%suche%' in PostgreSQL.
Das Wichtigste ist, zu verstehen, was Sie aufbauen, und nicht mit Kanonen auf Spatzen zu schießen.

🔥 Weitere Beiträge

Alle Beiträge
Was ist ORM und wozu wird es benötigt?
Programmierung (Програмування)26. Okt '25, 14:00 Uhr

Was ist ORM und wozu wird es benötigt?

Wenn wir mit Datenbanken arbeiten, müssen wir normalerweise SQL-Abfragen schreiben - Abfragen, Ei...

Was unterscheidet OAuth 1 von OAuth 2
Programmierung (Програмування)19. Okt '25, 20:34 Uhr

Was unterscheidet OAuth 1 von OAuth 2

OAuth 1 OAuth 1 wurde Anfang der 2000er Jahre als Methode zur sicheren Zugriffsgewährung für Drit...