© istockphoto.com/ akindo
Big Data in Elasticsearch und Laravel 5 mit einer Repository-Schicht

Suchen für Profis


Das Suchformular ist in modernen und großen Webprojekten wie Shops und Magazinen das wohl wichtigste Element der Seite geworden. Schaut man sich gut funktionierende Shops wie eBay und Amazon an, liegt der Fokus beim Einstieg auf die Seite ganz klar auf der Suche. Elasticsearch bietet Ihnen dafür die nötigen Werkzeuge und (REST-)Schnittstellen.

An Suchfunktionen werden heute hohe Ansprüche gestellt. Der Nutzer soll möglichst schnell und einfach über (Volltext-)Suchphrasen, die eventuell noch über eine Combo-Box auswählbar sind, zu einem Ergebnis gelangen. Schaut man sich Onlineshops wie Amazon, eBay und Co. an, fällt auf, dass der Fokus des Nutzers direkt auf die Suche gelenkt wird. Sonst würde er bei der schier unendlichen Produktpalette nämlich wohl nie zu dem gewünschten Ergebnis kommen.

Elasticsearch: ein kleiner Überblick

Elasticsearch ist eine auf Apache Lucene basierende Volltextsuchmaschine. Die aktuelle Version 1.5.2 bietet Ihnen eine Vielzahl an Features, zum Beispiel:

  • HTTP-JSON-REST-API zum Indexieren und Auslesen von Dokumenten

  • Google-ähnliche Suggestions für Suchvorschläge

  • Spellchecking: „Brmsbelg“ findet auch einen Bremsbelag

  • Die Facettensuche ist seit Version 1.0 über Aggregationen realisiert, was auch verschachtelte und zusammengesetzte Filter ermöglicht. Eine Facettensuche schränkt die verfügbaren Filter anhand der gesetzten Filter ein

  • Volltextsuche über mehrere Felder

  • Eigene Indexierungs- und Such-Analyzer

  • Clustering

Im Gegensatz zu einer relationalen Datenbank wie zum Beispiel MySQL, die über Schlüssel auf Dokumente verweist, werden in Elasticsearch Dokumente in einem invertierten Index gespeichert, der die Texte eines Dokuments in Terme trennt. Somit wird im Index nur noch die Anzahl der Dokumente mit dem entsprechenden Term sowie Informationen, welches Dokument diesen Term enthält und wo er sich im Dokument befindet, gespeichert.

Gegenüber einer Volltextsuche in MySQL bietet das folgende Vorgehen beim Indexieren einen deutlichen Geschwindigkeitsvorteil:

select title, body, created, author from article where body like '%foobar%';

Dort wird MySQL-intern ähnlich wie mittels grep auf der Kommandozeile das Feld body nach dem Vorkommen von foobar durchsucht. Dieses Vorgehen ist relativ aufwändig, weil die Suche über alle Dokumente hinweg durchgeführt werden muss, was gerade bei großen Datenmengen viel Zeit in Anspruch nehmen kann. Elasticsearch sucht für die gleiche Anfrage nach allen Dokumenten, die im Feld body den Term foobar bein...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang