in ,

Solr und Elasticsearch, ein Vergleich zweier Suchmaschinen

Solr und Elasitcsearch, die zwei größten Suchmaschinen, liefern sich Jahr für Jahr ein Kopf an Kopf rennen. Doch welche Suchmaschine hat die Nase vorne? In diesem Artikel wollen wir die beiden Suchmaschinen vorstellen und ihre Kernpunkte zum Thema ‚Search Engine‘ vergleichen.

Beide Suchmaschinen sind Open Source Search Engines, die auf Apache Lucene, einer Open Source Search Engine Software Library basieren. Beide können Full T

ext und Facetted Searches, die mittels API’s ausgeführt werden.

Solr

Programmiert in Java und entwickelt von der Apache Software Foundation wurde Solr 2004 das erste Mal veröffentlicht und ist seitdem eine der größten Suchmaschinen weltweit. Solr’s Open Source Code wird von der Solr Community seit Jahren verbessert. Solr’s Stärken liegen in Volltext-

Indizierungen und -suchen, Dynamic Clustering und Facetting. Die aktuellste Version mit Stand 09.11.2021 lautet 8.10.1.

Solr

Elasticsearch

Ebenfalls programmiert in Java und entwickelt von der Firma Elastic NV wurde Elasticsearch das erste Mal im Oktober 2010 veröffentlicht. Die Distributed Full Text Searche Engine gekoppelt mit Elasticsearch’s mächtiger Skalierbarkeit und Geschwindigkeit gewannen der Firma über die Jahre eine stetig wachsende Community.  Elasitcsearch ist ein Teil des ELK-Stacks, einer Gruppe von drei Freeware Produkten bestehende aus Elasticsearch, Logstash und Kibana, der für Datenvisualisierung, Analyse und Speicherung angewandt wird.

elasticsearch

Performance

Um die Suche der Suchmaschinen fair testen zu können, braucht man ein riesiges Dataset. Da wir dies nicht zur Verfügung haben, halten wir uns an die Meinungen der Solr- und Elasticsearch – Community Mitglieder, die besagen, dass beide Suchmaschinen grob geschätzt gleich performen. Wenn es sich um statische Daten handelt und 100% präzise und sehr schnelle Suchergebnisse benötigt werden, sollte man sich Solr genauer ansehen. Elasticsearch hingegen ist „out of the Box“ leichter zu bedienen, zu lernen, kann leichter skaliert werden und Cluster können leicht vergrößert oder verkleinert werden.

Konfiguration

Elasticsearch bietet standardmäßig beim Erstellen des Indexes einen schemalosen Modus. Das heißt, dass man Dateien zum Indizieren ohne Index an Elasticsearch schicken kann und das Programm dann selbst einen Index erzeugt, indem er die Feldtypen selbst feststellt. Man kann allerdings, falls ein Feld falsch eingelesen wurde, den Index editieren oder von Grund auf selbst definieren. Solr hingegen verwendet zum Indizieren ein Schema-File, in dem man Felder und deren Feldtypen festlegt. Man kann zwar alles als Dynamic Field festlegen, jedoch ist davon abzuraten, da darunter die Suche sehr stark leidet. Bei Solr werden fast alle Einstellungen in einem File namens solrconfig.xml gespeichert. Beim Ändern der Konfiguration von Komponenten wie Shards, Buffers oder auch Schemen muss die Solr Instanz neugestartet werden, damit die Änderungen übernommen werden. Elasticsearch macht hier fast das Gleiche, wobei Elasticsearch den Vorteil hat, dass es Änderungen an Shards und Replicas eines Clusters live updaten kann.

Setup up und Learning Curve

Hierzu müssen wir sagen, dass Elasticsearch um einiges einfacher zum Aufsetzen und Bedienen war. Das „up to date“-Design, ein leicht zu verstehendes Error Handling und der kinderleichte Dokumenten-Upload machten Elasticsearch um einiges attraktiver als Solr, was auch Elasticsearches erstes Ziel laut Erfinder der Search Engine war: https://stackoverflow.com/questions/2271600/elasticsearch-sphinx-lucene-solr-xapian-which-fits-for-which-usage/2288211#2288211.

Solr braucht in Punkten wie das Aufsetzen um einiges mehr an technischem KnowHow. Dies wird aber von Jahr zu Jahr besser, und wir müssen sagen, dass nicht nur Solr’s Getting Started sondern auch einige weitere Anleitungen zu Themen wie Indizierung und Schemen oder verschiedene andere Dokumente bereits sehr genau und detailliert geschrieben sind.

API

Um in Solr ein Suchergebnis zu erhalten, muss man eine Abfrage (http GET) mit den definierten Parametern an einen der definierten Requester schicken. Das Ergebnis kann man sich in Solr nach Belieben in JSON, XML und einigen anderen Formaten liefern lassen. Des Weiteren können auch Analytische Statistiken über die API abgefragt werden.

In Elasticsearch kann man über die API nicht nur nach Dokumenten suchen, sondern diese auch löschen. Die API erlaubt GET, DELETE POST und PUT Befehle, und es lassen sich ebenfalls Indizes erstellen und verwalten. Des Weiteren liefert die Elasticsearch API auch Statistiken und Metriken zu den aktuellen Status von Elasticsearch und der Konfiguration. Elasticsearch bietet hier weitaus mehr Statistiken als Solr.

Community

Solr und Elasticsearch haben beide große aktive Communities mit vielen Beiträgen zu den diversesten Themen und Problemen. Wenn man sich die Communities auf Open Hub ansieht und vergleicht, erkennt man, dass Elasticsearch seit längerem mehrere Contributions und Commits per Monat hat. Ein anderer Artikel zu diesem Thema besagt, dass dies an der Plattform für Änderungen liegen kann. Elasticsearch wird auf GitHub entwickelt und aktualisiert, während Solr auf JIRA, einer Plattform designed um Teams mit der Planung, dem Management und dem Verlauf eines Projektes zu helfen, aktualisiert wird.

Sharding und Caching

Elasticsearch hat was Sharding betrifft ein horizontales Design, was es flexibler als das statische Solr macht. Man kann bei Elasticsearch Trigger definieren, die sich darum kümmern, das Shards innerhalb des Clusters bewegt werden, falls eine bestimmte Aktion ausgelöst wird. Des Weiteren gibt es bei Elasticsearch eine „Shrink Index API“, mit der Shards innerhalb eines Clusters verkleinern werden können.

Solr verwendet den Apache Zookeeper und die Solr Cloud zum managen der Cluster. Mittels der AutoScaling API kann man ebenfalls clusterspezifische Regeln definieren, die sich um das verschieben der Shards kümmert, falls ein Event eintrifft.

Unser Fazit

Um sich für eine von den beiden Suchmaschinen zu entscheiden, braucht man nicht nur viel technisches Knowhow sondern auch ein Verständnis für deren Features, Einstellungen und Zielgruppen.

Nochmal Kurz die Eigenschaften der Suchmaschinen zusammengefasst:

Elasticsearch

  • Sehr leichte Installation mit einer sehr guten Dokumentation und einer aktiven Community rund um den ELK-Stack
  • Gute Basis Skalierbarkeit, optimal für Cloud-Einsatz
  • Optimierte Query Execution, besser für sich ändernde Daten geeignet.
  • Modernes Design und gute API’s

Solr

  • Leicht zu installieren, dank einer guten Dokumentation und einer sehr lang bestehenden Community und Firma (Apache)
  • Statische Skalierbarkeit, verwendet Zookeeper und Solr Cloud zum Managen.
  • Am Besten geeignet für statische Daten.
  • Ein wenig veraltetes Design und alte API’s

Wenn man sich einmal mit dem Thema auseinandersetzen oder gar einfach einmal eine Suchmaschine testen möchte, würden wir Elasticsearch empfehlen.

Quellen

https://solr.apache.org/guide/8_8/

https://solr.apache.org/guide/8_8/solr-tutorial.html

https://solr.apache.org/guide/6_6/schema-factory-definition-in-solrconfig.html

https://solr.apache.org/guide/6_6/the-standard-query-parser.html

https://lucene.apache.org/core/features.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-percolate-query.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html

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

https://www.openhub.net/p/elasticsearch

https://www.openhub.net/p/solr

https://www.youtube.com/watch?v=3d95cesil68&ab_channel=JAXTV

 

 

Dashboard Daten – Welche, woher, wie gut, wie und wohin?

Cloud

Cloud-Computing & Cloud Lösungen