Analyse von Suchanfragen mit Elasticsearch, Logstash und Kibana
Für einen unserer Kunden haben wir ein Portal erstellt, das eine Suchemaschine nutzt. Im Laufe der Zeit sammelten sich einige Anforderungen des Kunden an, die sich auf die Suchmaschine und die Ergebnisse auswirkten. Es wurden z.B. alle Suchergebnisse nach dem Erstellungsdatum sortiert oder bestimmte Dokumententypen wurden standardmäßig aus der Suche ausgeschlossen. Zur Verbesserung der Qualität der Suchergebnisse haben wir die Verwendung der Suche und der Filter analysiert. Alle Suchanfragen wurden bisher schon in einer Log-Datei erfasst und können damit nachträglich analysiert werden. Um unserem Kunden zu zeigen, welches Potential in einer statistischen Auswertung steckt, haben wir mit Elasticsearch, Logstash und Kibana 4 (dem sogenannten ELK-Stack) eine einfache Visualisierung der Suchanfragen erstellt.
Der erste Schritt ist Logstash so zu konfigurieren, dass es die Suchbegriffe aus den vorhandenen Log-Dateien extrahiert. In der Log-Datei wird die Solr-Query in URL-Form gespeichert. Mit dem urldecode- und dem kv-Filter von Logstash kann der Query-Teil einer URL zerlegt werden. Anschließend können mit den Filtern mutate und ruby die Suchbegriffe normalisiert und sortiert werden. Das ist hilfreich um unterschiedliche Suchbegriffe wie "2012 Reisekosten" und "reisekosten 2012" als eine Suche nach dem gleichen Begriff zu erkennen.
Logstash legt die Suchanfragen als Dokumente in Elasticsearch ab. Mit Kibana wird daraus ein ansehnliches Dashboard, das es einem einfach macht nach bestimmten Kriterien zu filtern. So kann z.B. der Zeitbereich interaktiv gewählt werden und alle Auswertungen aktualisieren sich sofort. Außerdem können alle Suchbegriffe angezeigt werden, bei denen ein bestimmter Filter in der Suche aktiviert war.
Mit Statistiken dieser Art kann sich der Kunde schnell einen Überblick verschaffen, wie die Suche benutzt wird, welche Begriffe häufig gesucht werden oder welche Filter nie verwendet werden. Durch die Verwendung von Elasticsearch, Logstash und Kibana ist es möglich, die Statistik ständig mit aktuellen Daten zu erweitern. So kann ohne weiteren Aufwand beobachtet werden, ob Änderungen an der Suche die gewünschten Auswirkungen zeigen.