Suchserver: Ein Vergleich zwischen Solr, Elasticsearch und OpenSearch

Kevin Ferranti Mai 29, 2024
Suchserver: Ein Vergleich zwischen Solr, Elasticsearch und OpenSearch

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 in Bezug auf deren komplexe Funktionen. 

Beliebtheit der einzelnen Suchserver

Derzeit ist Elasticsearch die 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 den Elefanten im Raum zu adressieren: die Lizenz, unter der Elasticsearch veröffentlicht wird. 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 ist, dass Elasticsearch nicht mehr als Managed Service angeboten werden kann. Diese Lizenzänderung verhindert, 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, einigen Quellcode 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 bei bereits vorhandener Erfahrung mit einem Suchserver, diesen auch weiterhin zu verwenden.

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 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 eine reifere Open-Source-Community. Elasticsearch profitiert von einer lebendigen und aktiven Elastic-Community. Per 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 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 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.