Blog der SHI GmbH

Solr 5 – Startskripte jetzt noch einfacher

Das Starten von Solr-Instanzen war in der Vergangenheit oftmals nicht ganz vorbereitungslos zu bewerkstelligen. Die Schuld daran trugen vornehmlich die vielen, oft kryptisch wirkenden Parameter, deren Angabe obligatorischer Bestandteil des Solr-Startkommandos war. Verständnisprobleme, Fehlinterpretationen und Tippfehler seien hier nur als einige der Nachteile einer solchen Parameterliste genannt. Doch frustrierte Solr-Nutzer können nun aufatmen: Die 5.x-Versionen der Suchmaschine vereinfachen das Starten, Neustarten und Stoppen der Solr-Instanzen und lassen somit parameterbedingte Fehlerquellen versiegen.

Der Vergleich: Solr starten – neu gegen alt

Werfen wir zunächst einen Blick auf die Eingabefolge „java –jar start.jar“, welche in früheren Solr-Versionen (4.x) nötig war, um einen alleinstehenden Solr-Knoten zum Leben zu erwecken. Die mitgelieferte JAR-Datei start.jar übernimmt diese Aufgabe gewissenhaft. Etwas merkwürdig ist hierbei allerdings die Location, in der sich die Datei befindet, denn sie wurde zusammen mit Direktiven zu Beispieldokumenten, Bibliotheken, Skripten und anderem in einen einzigen Ordner „example“ gepfercht. Diese Ordner-Struktur könnte beim Nutzer zu der Annahme führen, dass start.jar lediglich für vorgefertigte Beispiele genutzt werden kann, was ihrer eigentlichen Kompetenz nicht annähernd gerecht wird.
Zugegebenermaßen könnten Beschwerden, welche die Länge der Start-Eingabe und die Anzahl der zu übergebenen Parameter betreffen, hier noch ohne Probleme abgeschmettert werden. Lenken wir nun aber unsere Aufmerksamkeit auf den minimalistischen Start-Befehl einer 5.x-Version „solr start“, so wirkt das Start-Management über eine JAR-Datei vergleichsweise schwerfällig. Dahingegen erscheint „solr start“ in seiner Schlichtheit der natürlichen, menschlichen Sprache so ähnlich, dass diese Art eine Solr-Instanziierung anzustoßen schon fast als intuitiv bezeichnet werden kann. Auch die Neuplatzierung der Startdatei (solr.cmd) innerhalb eines bin- statt des example-Verzeichnisses schafft Klarheit über ihre Unabhängigkeit von Beispielanwendungen.

Startmanöver SolrCloud

Noch deutlicher wird der Vorteil neuerer Solr-Versionen beim Einsatz der SolrCloud: Wo früher noch mit umständlichen und tippfehleranfälligen Parametern gearbeitet wurde, können Nutzer der Solr-Versionen ab 5.0 ihre Cloud in wenigen Tastenanschlägen aufsetzen. Um eine Cloud statt eines einzelnen Solr-Knotens zu starten, ist lediglich der Zusatz „-c“ von Nöten, sodass „solr start -c“ eine funktionstüchtige Cloud erstellt. Zum Vergleich hier das Starten einer SolrCloud in 4.x-Versionen mit der kürzesten funktionstüchtigen Eingabe: java –DzkRun –Dbootstrap_confdir=solr/collection1/conf –Dcollection.configName=myconf –jar start.jar. Diese Angaben sind notwendig, um den internen Zookeeper-Server zu starten (-DzkRun), die Konfigurationsdateien auffindbar zu machen (-Dbootstrap_confdir) und den Namen für die Konfiguration der Collection festzulegen (-Dcollection.configName). Fehlt eine dieser Angaben oder haben sich syntaktische Fehler in die fast 100 Zeichen lange Eingabe geschlichen, so werden sie anstelle einer SolrCloud lediglich eine Liste von Fehlern auf Ihrer Solr-Admin-Oberfläche wiederfinden.
Um fair zu bleiben, sei hier angemerkt, dass der Start einer SolrCloud zusammen mit ihren Konfigurationsangaben und einer initialen Collection selbstverständlich vorteilhaft sein kann gegenüber der minimalistischen Variante der 5.x-Versionen. Letztere startet nämlich eine leere SolrCloud, zu welcher Collections erst hinzugefügt werden müssen. Je nach Anwendungsfall kann aber gerade eine unbesetzte Cloud, welche nahezu parameterlos zu starten ist, besser auf die Bedürfnisse des Nutzers passen. Sie erscheint als weißes Blatt Papier, welches sich zur beliebigen Beschriftung anbietet. Die Option zur Angabe der in älteren Solr-Versionen zwingend erforderlichen Parameter bleibt auch ab Solr 5.0 erhalten, ist aber eben nicht mehr unbedingt erforderlich.

Was das neue Startskript noch so kann

Über die genannten Verbesserungen hinaus, bringen die neuen Startskripte eine Reihe an Zusatzfunktionen mit sich, die nicht außer Acht gelassen werden sollten. Beginnend mit dem Schlagwort „solr“ können verschiedene Informationen über laufende Solr-Instanzen eingefordert und weitere Aktionen durchgeführt werden. Nachfolgend seien hier die wichtigsten Befehle erläutert:

  • solr status
    gibt eine Übersicht über laufende Solr-Instanzen inklusive ihres home-Verzeichnisses, der Zeit, zu der sie gestartet wurden, des Speicherverbrauchs und der Cloud, in der sie sich gegebenenfalls befinden.
  • solr healthcheck
    zeigt einen Überblick über eine mittels „-c collectionName“ angesprochene Collection innerhalb eines mit „-z zooServer“ spezifizierten Zookeeper-Server. Der Nutzer erhält so unter anderem Auskunft über den Status der Collection, die Anzahl an indizierten Dokumenten und eine Aufstellung über alle Shards der Collection. Diese Funktion kann nur in einer SolrCloud-Umgebung genutzt werden.
  • solr create_core
    erstellt einen neuen Solr-Core, dessen Name mit „-c name“ spezifiziert wird. Die Ausgabe auf der Kommandozeile enthält den intern benutzten URL-Aufruf zur Erstellung eines Cores und die Antwort des Servers. Diese Funktion ist nur für eigenständige Solr-Instanzen zu verwenden, welche nicht im SolrCloud-Modus gestartet wurden.
  • solr create_collection
    erstellt eine neue Collection in der SolrCloud. Minimal sind als Parameter „-c name“ „-d configDir“ sowie „-n configName“ anzugeben. Die Konsolenausgabe zeigt den zur Collection-Erstellung intern benutzten URL-Aufruf und die Antwort des Servers. Diese Funktion ist nur im SolrCloud-Modus verfügbar, im Single-Node-Modus wird der Befehl automatisch zu create_core umgeformt.
  • solr delete
    löscht eine Collection oder einen Core, welche(r) durch den Parameter „-c name“ definierbar ist.
    Die Eingabe „solr -help“ bzw. „solr befehl -help“ listet alle ausführbaren Befehle im Terminalfenster auf bzw. zeigt eine komplette Liste möglicher Parameter für den jeweiligen Befehl an.

Feedback-Lieferung

Ein weiterer Vorteil, den das neue Startskript mit sich bringt, ist die verbesserte Transparenz für den Nutzer. Der Start einer Solr-4.x-Instanz über die Kommandozeile produziert eine Reihe von Logausgaben. Sobald keine neuen Ausgaben mehr angezeigt werden, ist Solr bereit zur Benutzung. Eine eigene Meldung über die Verfügbarkeit gibt es allerdings nicht. In neueren Versionen ist das Beenden des Startvorgangs besser nachvollziehbar, da ein erfolgreiches Starten von Solr auf Port 8983 in der Meldung „Started Solr server on port 8983. Happy Searching!“ resultiert. Auch das Terminieren laufender Solr-Instanzen ist in den 5.x-Versionen filigraner gelöst. Ein Solr-Server auf Port 8983 beispielsweise wird nun über den Befehl „solr stop –p 8983“ heruntergefahren. Auch hier wird die Transparenz für den Nutzer durch eine Mitteilung auf der Kommandozeile erhöht.

Fazit

Die veränderten Startskripte in Solr-Versionen ab 5.0 erlauben einen schnelleren Einstieg durch ihre intuitive Gestaltung und bieten dem Nutzer mehr Transparenz und eine Reihe an zusätzlichen Funktionen. Sie sind kürzer und somit weniger anfällig für Syntax- und Tippfehler, während sie trotzdem alle Optionen vorangegangener Solr-Versionen weiterhin zur Verfügung stellen. Vor allem bei Verwendung der SolrCloud sind die Vorteile der neuen Herangehensweise zum Starten und Herunterfahren von Solr-Instanzen nicht von der Hand zu weisen. Es sei hier klargestellt, dass auch beim Einstieg in Solr älterer Versionen der zu betreibende Aufwand überschaubar ist. Nichtsdestoweniger konnten die Versionen 5.x die Bedienung für den Nutzer durch das Anpassen der Startskripte noch mehr erleichtern.

Patricia Kraft, Bereichsleitung Search & Analytics

Patricia Kraft