Back to top

Elasticsearch vs. Solr – Auswahl einer Open-Source-Suchmaschine

Warum sind wir hier? Was ist der Sinn des Lebens?  Sollte ich lieber Sport machen oder eher meine Kräfte schonen? Ist es besser, früh mit der Arbeit anzufangen und früh Feierabend zu machen, oder später anfangen und bis in die Nacht arbeiten? Sollte ich lieber Ketchup oder Mayonnaise auf meine Pommes nehmen? 

Auf viele der großen existenziellen Fragen des Lebens gibt es keine richtige Antwort. Manchmal ist das Thema schwerer als gedacht, oder extrem subjektiv belastet. Also konzentrieren wir uns lieber darauf, wenigstens eine wichtige Frage zu klären: Sollte ich Solr oder Elasticsearch nutzen?

Hier das Szenario: Ihr Unternehmen plant, die erste eigene Suchmaschine zu implementieren, oder zu einer anderen Suchmaschine zu wechseln – ein Problem, dass all jene Nutzer der Google Search Appliance (GSA), die nach einem Ersatz suchen, nur zu gut kennen. Vielleicht geht es auch nur darum, durch einen Wechsel auf eine Open-Source-Lösung Kosten einzusparen. In Ihrem Unternehmen sind sie als sachkundiger und fähiger Entwickler geschätzt, also fragt man bei diesem schweren Problem nach Ihrem Rat. Dieses Problem umfasst viele Aspekte, im Kern ist es jedoch eine Frage von „Big Data und Suche“. 

Sie sollen große Mengen Content von mehreren Datenquellen extrahieren und aus diesen Daten Einblicke gewinnen, die Ihrem Unternehmen helfen, weiter zu wachsen und die Geschäftsziele für das Jahr zu erfüllen.

Sie haben nur einen Versuch

Das Problem hat also durchaus seine Tragweite. Hier darf man sich keine Fehler erlauben und hat nur einen Versuch. Sie müssen direkt die richtige Suchmaschine für diese Aufgabe auswählen. Sie wollen etwas aus dem Bereich Open-Source, also bleiben zwei beliebte Möglichkeiten: Solr oder Elasticsearch, die beide regelmäßig von DB-Engines auf den ersten beiden Plätzen sowohl für Open-Source-Suchmaschinen als auch kommerzielle Angebote gelistet werden. 

enterprise-search-engines-ranking.jpg

Welche Open-Source-Suchmaschine würden Sie wählen?

Hier sollte man nicht die Münze werfen oder wahllos tippen. Beide Suchmaschinen leisten großartige Arbeit, also gibt es keine „richtige“ Wahl. Es kommt alles auf die Anforderungen an. 

Der erste Schritt muss also sein, zu verstehen, welche Anwendungen erstellt werden sollen. Der nächste Schritt wäre dann, anzusehen, was die verschiedenen Suchmaschinen bieten können. Und nur am Rande erwähnt, wenn Sie immer noch überlegen, ob Sie lieber eine Open-Source-Lösung oder doch eher ein kommerzielles Produkt wählen sollen, lesen Sie unser kostenloses E-Book. Dieses gibt Ihnen ein tieferes Verständnis für die 10 Schlüsselkriterien, die man bei der Auswahl einer Suchmaschine bedenken sollte.

Zusammenfassung der Funktionen

Vor einigen Jahren haben wir in unserem Blog einen Überblick über die wichtigsten Unterschiede zwischen Solr und Elasticsearch gegeben, in dem wir die allgemeinen Trends und nicht-technische Einblicke besprochen haben. In der Zwischenzeit haben sich sowohl Solr als auch Elasticsearch weiterentwickelt. Beide sind zu Hauptakteuren auf dem Markt der Open-Source-Suchmaschinen geworden. Es lohnt sich also, einen erneuten Blick auf die Situation zu werfen und zu vergleichen, wie der aktuelle Stand bei den beiden Optionen ist.

Alter und Reifegrad

Solr hat eindeutig die längere Geschichte, die Suchmaschine wurde 2004 von Yonik Seely bei CNET Networks entwickelt und 2006 als Beitrag zu Apache übergeben. Hier hatte sich Solr 2007 schließlich die Position als eins der führenden Projekte erkämpft. Elasticsearch hingegen wurde offiziell 2010 gestartet. Inoffiziell arbeitet der Gründer Shay Bannon aber schon seit 2001 an diesem Projekt, nur, dass es damals noch unter dem Namen Compass lief. Da seitdem die Entwickler von Kibana, Logstash und Beats zu Elasticsearch beigetreten sind, konnte man damit die Produktfamilie des Elastic Stacks schaffen, die sich als wichtige Technologie für Suche und Log-Analyse behauptet hat. Zusammengefasst hat Solr den Vorteil, schon länger sichtbar auf dem Markt präsent zu sein.

Community und Open-Source

Beide verfügen über eine sehr aktive Community. Durch Github kann man erkennen, dass beides sehr aktive Open-Source-Projekte sind, die regelmäßig neue Releases veröffentlichen.

apache-lucene-solr-github.JPG

Beide sind Open-Source und werden unter der Apache-Lizenz veröffentlicht, trotzdem gibt es leichte Unterschiede in den Details. Solr ist wirklich Open-Source. Jeder kann helfen und einen Beitrag leisten. Bei Elasticsearch können zwar immer noch Beiträge geleistet werden, aber nur Mitarbeiter von Elastic (dem Unternehmen hinter Elasticsearch und dem Elastic Stack) können diese Beiträge freigeben. 

Ist das gut oder schlecht? Das kommt auf den Standpunkt an. Wenn man bei Solr eine Funktion vermisst, kann man diese einfach entwickeln und der Community vorstellen – wenn die Funktion Anklang in der Community findet, wird die Funktion in Solr eingebunden. Bei Elasticsearch entscheidet Elastic, ob der Beitrag angenommen wird. Das führt dazu, dass in Solr mehr Funktionen zur Verfügung stehen. Die Beiträge zu Elasticsearch hingegen durchlaufen mehrere Stufen der Qualitätskontrolle und weisen daher meist eine zuverlässigere Qualität auf.   

Dokumentation

Sowohl Solr als auch Elasticsearch haben sehr gut dokumentierte Referenzmaterialien. Elasticsearch wird über Github betrieben, Solr nutzt Atlassian Confluence. Die Referenzmaterialien findet man über die folgenden Links:

Zentrale Technologie

Werfen wir einen tieferen Blick auf die Technik. Elasticsearch und Solr sind zwei unterschiedliche Suchmaschinen. Beide basieren aber auf Lucene, das bedeutet, beide bauen auf starken Grundlagen auf.

Falls sich jemand fragt, warum Lucene eine so starke Grundlage ist – Lucene ist die eigentliche Software-Library für den Abruf von Informationen, die von den meisten Suchmaschinen genutzt wird. Sie ist extrem schnell, stabil und wahrscheinlich nahezu perfekt. Lucene wurde 1999 von Doug Cutting erstellt – einem der Entwickler von Hadoop. Kurz gesagt, Lucene ist die perfekte Wahl für das Herzstück einer jeden Suchmaschine.

Java APIs und REST

Elasticsearch bietet eine REST API, die mehr an „Web 2.0“ orientiert ist, aber Solr bietet eine deutlich bessere Java API mit SolrJ – oder SolrNet, wenn Solr mit Microsoft-Technologien zusammen genutzt wird. Elasticsearch bietet Nest und Elasticsearch.Net. Die REST API von Solr scheint weniger flexibel, aber erledigt die Kernaufgaben sehr gut: Indexierung und Queryverarbeitung. Elasticsearch versteht JSON, ist also eine gute Wahl, wenn viel JSON eingesetzt wird. Solr unterstützt auch JSON, die Funktion wurde aber erst später hinzugefügt, ursprünglich war Solr eher auf XML ausgerichtet.

Content-Verarbeitung

content processing.jpgDa beide eine API bieten, ist es einfach, Content aus benutzerdefinierten Anwendungen oder bereits bestehenden und konfigurierbaren Anwendungen zu indexieren. So kann beispielsweise unser Aspire Content Processing-Framework Verbindungen mit verschiedenen Datenquellen herstellen und diese in Solr oder Elasticsearch ablegen. 

Solr bietet auch eine Funktion für die Extrahierung von Text aus Binärdateien, über Apache Tika. Man kann also ein PDF über den ExtractRequestHandler hochladen, und Solr wird wissen, wie man damit umgeht. 

Elasticsearch andererseits arbeitet gut mit Logstash zusammen, und kann damit Daten aus jeder Quelle verarbeiten und indexieren.

Skalierbarkeit

Skalierung ist oft eine der Hauptfragen. In diesem Szenario war Elasticsearch bis vor kurzem eindeutig führend, weil Solr immer noch durch Master-Slave eingeschränkt wurde. Seit neustem ist aber SolrCloud verfügbar. Mithilfe von Zookeeper kann man nun einen Solr-Cluster viel einfacher und schneller skalieren. Eine eindeutige Verbesserung im Vergleich zu den älteren Versionen von Solr, die noch Master-Slave nutzten. Es sind immer noch viele Verbesserungen notwendig, aber die Zukunft für Solr sieht gut aus, hinsichtlich der Größe der Datensätze, die in Solr aufgenommen und durchsucht werden können.

Unterstützung durch Anbieter

Viele Unternehmen haben irgendwann den Punkt erreicht, wo sie entscheiden müssen, welches Produkt für sie am besten funktioniert. Cloudera als Beispiel hat Solr als Suchmaschine gewählt, die in die Open-Source-Technologie CDH (Cloudera Distribution Including Hadoop) aufgenommen wurde. Es gibt aber auch andere Anbieter, die Elasticsearch als Suchmaschine für ihre Lösungen verwenden. Wir hier bei Search Technologies helfen mit Consulting, Bereitstellung und Support für beide Suchmaschinen. 

Vision und Ökosystem

Solr hat sich immer mehr auf die Textsuche konzentriert. Elasticsearch hat schnell seine Nische entdeckt und sich auf die Log-Analyse konzentriert, durch den Elastic Stack (früher als ELK-Stack bezeichnet), der aus Elasticsearch, Logstash, Kibana und Beats besteht. Beide haben eine klare Vorstellung von der Zukunft und wie sie dorthin kommen.

Außerdem sind beide Suchmaschinen gut angenommen, insofern, dass sie die Grundlage für viele der führenden Such- und Big Data-Plattformen darstellen. Elasticsearch ist beispielsweise Teil von Microsoft Azure Search, während Solr in Cloudera Search integriert ist.

Leistung

Auch hinsichtlich der Leistung geben die beiden sich nicht viel, die meisten Entwickler stimmen überein, dass beide Suchmaschinen gute Leistung erbringen. Für den Großteil der Nutzungsfälle, egal, ob für interne oder externe Suchanwendungen, wird es kaum Probleme mit der Leistung geben, wenn die Anwendung korrekt entwickelt und konfiguriert ist.

Web-Administration

Solr wird mit einer integrierten Web-Administration ausgeliefert, während Elasticsearch mehrere Premium-Plugins für Sicherheit, Benachrichtigungen und Überwachung bietet. In dieser Liste kann man den gesamten Umfang der Elastic-Produktfamilie sehen.

Visualisierung

Es gibt zahlreiche Möglichkeiten für die Visualisierung von Daten in Solr und Elasticsearch. Man kann eigene benutzerdefinierte Dashboards für die Visualisierung erstellen oder die standardmäßigen Visualisierungsoptionen der Suchmaschine nutzen und vielleicht geringfügig anpassen. Ein Unterschied sollte jedoch betont werden:  

Solr hat seinen Fokus primär auf Textsuchen. Hier leistet Solr gute Arbeit und ist zum Quasi-Standard für Suchanwendungen geworden. Elasticsearch hat eine andere Richtung eingeschlagen und bietet mit dem Elastic Stack durch Log-Analyse und Visualisierung mehr als die reine Suche. Im Folgenden einige Visualisierungen, die mit Kibana 5 erreicht werden können. 

Man kann nicht sagen, dass ein Produkt besser wäre als das andere. Es zeigt sich nur, dass jede Suchmaschine abhängig von den unterschiedlichen Nutzungsfällen und konkreten Anforderungen ihre Stärken und Schwächen hat. Die Auswahl wird also vor allem davon abhängen, was das Unternehmen erreichen will.

Kurz gesagt sind sowohl Elasticsearch als auch Solr hervorragende Optionen aus dem Open-Source-Bereich, die helfen, das Beste aus den Daten herauszuholen. Es hängt nur von den Anforderungen, dem Budget, dem Zeitplan und der Komplexität des Projekts ab. Für den weiteren Prozess der Entscheidungsfindung stellt dieses E-Book eine wichtige Ressource dar.

Ich wünsche noch viel Erfolg bei der Suche. @xmorera und @SearchTechCorp stehen gerne bei Fragen zur Verfügung, oder auch einfach nur für den Austausch von Erfahrungen mit diesen Suchmaschinen.

- Xavier

0