Alle Blogposts Know-how 5 Minuten Lesezeit

Suchserver: Ein Vergleich zwischen Solr, Elasticsearch und OpenSearch

Kevin Ferranti
Verfasst von
Kevin Ferranti
Veröffentlicht
May 28, 2024
Diesen Blogpost teilen

Suchfunktionen sind in heutigen Webanwendungen allgegenwärtig. Die Suche nach Produkten oder innerhalb einer Produktbeschreibung ist für einen Online-Shop eine Notwendigkeit. Die Suche muss sich dabei nicht nur auf Webanwendungen beschränken. Mit unterschiedlichen Anwendungsfällen ergeben sich auch unterschiedliche Anforderungen an Suchserver und deren Features. Glücklicherweise bietet die Open-Source-Welt einige moderne Suchserver, die eine breite Palette an Anforderungen abdecken.

Aber welcher Suchserver ist die richtige Wahl für Ihren Anwendungsfall? Dieser Artikel behandelt drei mögliche Optionen, von denen zwei auch als Managed Service bei Nine verfügbar sind: Apache Solr, Elasticsearch (nicht als Nine Managed Service erhältlich) und OpenSearch. 

Apache Lucene als Grundlage

Die drei Suchserver haben eines gemeinsam. Sie basieren alle auf derselben leistungsstarken Java-Bibliothek: Apache Lucene. Apache Solr und Apache Lucene werden als Open-Source-Projekt von der Apache Foundation veröffentlicht.

Da sie auf Apache Lucene basieren, gleicht sich der Funktionsumfang der drei Suchserver. Alle bieten dabei unter anderem:

  • Ranked Search: die Suchergebnisse mit der höchsten Relevanz werden zuerst angezeigt
  • Query-Typen: Phrase Queries, Wildcard Queries, Proximity Queries usw.
  • Sortierung: Suchergebnisse können mithilfe von Feldern sortiert werden
  • Features: Highlighting, Faceting (dynamisches Filtern) usw.

Allerdings unterscheiden sich die Suchserver bei den komplexeren Funktionen. 

Beliebtheit der einzelnen Suchserver

Derzeit ist Elasticsearch der beliebteste Suchserver unter den drei oben erwähnten Optionen.

Quelle: https://db-engines.com/en/ranking_trend/search+engine

Lizenzänderung bei Elasticsearch

Man kann nicht über Elasticsearch sprechen, ohne ganz offen das damit verbundene Problem anzugehen: die Elasticsearch-Lizenz. Ab Version 7.10.2 wurde die Lizenz von Elasticsearch von der Open-Source-Lizenz «Apache 2.0» auf die Lizenz «Server Side Public License (SSPL)» geändert. Obwohl der Code weiterhin zum Download zur Verfügung steht, ist die neue Lizenz nicht mit den Vorstellungen der Open Source Initiative (OSI) kompatibel. Eine wesentliche Änderung besteht darin, dass Elasticsearch nicht mehr als Managed Service angeboten werden darf. Diese Lizenzänderung verhindert also, dass wir Elasticsearch als Managed Service anbieten können.

Diese Lizenzänderung kann zugleich als Geburtsstunde von OpenSearch gesehen werden. OpenSearch wurde von Amazon auf Basis von Elasticsearch 7.10.2, der letzten Version unter der «Apache 2.0»-Lizenz, ins Leben gerufen und unter der «Apache 2.0»-Lizenz veröffentlicht.

Um weiterhin unter der «Apache 2.0»-Lizenz veröffentlicht werden zu können, war es erforderlich, Teile des Quellcodes zu entfernen. Da wir Elasticsearch nach der Lizenzänderung nicht mehr als Managed Service anbieten konnten, haben wir OpenSearch als Ersatz für Elasticsearch eingeführt.

Den richtigen Suchserver wählen

Alle drei Suchserver bieten eine Vielzahl von Funktionen und sind für die meisten Anwendungsfälle geeignet. Da die Unterschiede zwischen den Suchservern gering sind, empfehlen wir die Nutzung des Suchservers, mit dem Sie bereits Erfahrungen sammeln konnten.

Bitte beachten Sie, dass Nine aufgrund der oben genannten Lizenzbeschränkungen OpenSearch und Solr anbietet und Elasticsearch nicht als Managed Service zur Verfügung stellen kann.

Dennoch werden wir in den nächsten Abschnitten eine Liste der wichtigsten Unterschiede zwischen den drei Suchservern aufzählen und erläutern. 

Unterschiede zwischen Apache Solr und Elasticsearch

Unterschiede bei den Funktionen

Die wichtigsten Unterschiede in Bezug auf die Features sind folgende:

  1. Fokus: Die Stärke von Solr liegt in seinen zuverlässigen Volltextsuchfähigkeiten, die im Vergleich zu Elasticsearch eine breitere Palette an Funktionen in diesem Bereich bieten. Während Elasticsearch seine Schnittstelle durch eine simple API vereinfacht, geht bei Solr ein wenig Flexibilität verloren. Hingegen zeichnet sich Elasticsearch durch die Verarbeitung von Zeitreihendaten und Analysen aus und ist für seine starke Skalierbarkeit bekannt.
  2. Datenverarbeitung: Beide Tools bieten eine Vielzahl von Optionen und Datenquellen, wie z. B. JSON oder CSV. Solr arbeitet jedoch mit vordefinierten Schemata, während Elasticsearch aufgrund seines schemafreien Ansatzes flexibler ist. Obwohl die Schemata von Solr auch dynamischer definiert werden können, ist es in dieser Hinsicht keine Konkurrenz für Elasticsearch.
  3. Abfragesprache: Die Abfragesprache von Solr ist anspruchsvoller und ermöglicht komplexere Suchen. Elasticsearch hingegen bietet eine einfachere und intuitivere Syntax.
  4. Skalierbarkeit: Obwohl beide Systeme gut skalierbar sind, weist Elasticsearch eine dezentrale Architektur auf und unterstützt automatisches «Sharding».

Unterschiede in den Communities

Apache Solr hat eine längere Entwicklungsgeschichte und daher auch eine reifere Open-Source-Community. Elasticsearch weist jedoch eine dynamische und aktive Elastic-Community auf. Mit Stand von Mai dieses Jahres ist Elasticsearch laut DB-Engines allgemein beliebter als Apache Solr.

Unterschiede zwischen Elasticsearch und OpenSearch

Unterschiede bei den Funktionen

Obschon OpenSearch auf Version 7.10.2 von Elasticsearch basiert, hat sich OpenSearch seither unabhängig von Elasticsearch entwickelt.

Neben der gemeinsamen Basis auf Apache Lucene gibt es einige spezifische Funktionen, wie die Authentifizierung oder Autorisierung, die Indexverwaltung und das Alerting, die in Elasticsearch proprietär implementiert waren und in der Folge durch Open-Source-Alternativen ersetzt werden mussten.

Da beide Suchserver unabhängig voneinander entwickelt werden, gibt es neue Features, die nicht beide Suchserver vorweisen können. Elasticsearch hat zum Beispiel «Time Series Data Streams» (TSDS) implementiert, die Metrikdaten als eine oder mehrere Zeitreihen ermöglichen. OpenSearch hat hingegen die Segmentreplikation wieder eingeführt, die das Kopieren von einzelnen Dateisegmenten über Shards hinweg ermöglicht, anstatt dass die Dokumente auf jeder Shard-Kopie indiziert werden.

Unterschiede in den Communities

Derzeit scheint es mehr Beiträge zu Elasticsearch als zu OpenSearch zu geben. Allerdings steigt das Interesse an OpenSearch weiter an, während das Interesse an Elasticsearch langsam abnimmt. Aufgrund der Lizenzänderung von Elasticsearch gibt es viele Anbieter, die – wie wir bei Nine – Elasticsearch nicht mehr als Managed Service anbieten.