Elasticsearch - Was sind die Vorteile für Onlineshops?

29.06.2020
extendedLogo

Wer heute in einem Onlineshop oder einer Webanwendung sucht, erwartet nicht nur umgehend aussagekräftige Ergebnisse, sondern auch Unterstützung in Form von Autocompletes oder Suchvorschlägen.

Schnelligkeit kann zum Knockout-Kriterium werden, wenn Nutzer des "langen" Wartens überdrüssig, die Seite verlassen und gegebenenfalls zum Wettbewerber abwandern. Doch es zählen nicht nur (Milli)Sekunden, um den Kunden auf der eigenen Seite zu halten. Auch die Qualität der Suchergebnisse ist entscheidend.

Um höchstmögliche Geschwindigkeit und Qualität von Suchergebnissen zu gewährleisten, müssen leistungsstarke Search-Engines in die Website integriert werden. Eine der wichtigsten Volltextsuchmaschinen ist Elasticsearch, auf deren Leistungsumfang Unternehmen wie Facebook, Netflix, Zalando und auch GitHub setzen.

Wie funktioniert die Volltextsuche mit Elasticsearch? Welche Vorteile ergeben sich für Onlineshop- und Website-Betreiber? Und welche Alternativen gibt es zu dieser sehr beliebten Search-Engine? Diese und weitere Fragen klären wir hier.

Was ist Elasticsearch?

Bei Elasticsearch handelt es sich sowohl um eine Open-Source Suchmaschine als auch um eine Analytics-Engine, die seit 2010 auf dem Markt verfügbar ist. Sie basiert auf Apache Lucene und kann für Daten aller Art eingesetzt werden: Textdaten, numerische Daten, Geodaten und sowohl strukturierte als auch unstrukturierte Daten. Ihr Einsatzbereich ist damit (theoretisch) unbegrenzt. So können über Geodaten beispielsweise Angebote nach Distanz zum Nutzer angezeigt werden. Onlineshops bietet Elasticsearch damit sehr viele Möglichkeiten für kreative Umsatzsteigerungen.

Vorteile von Elasticsearch

Elasticsearch bietet als Search Engine viele Vorteile:

  • Verteilte Natur: Einzelne Knoten bilden zusammengenommen ein Cluster, wodurch es möglich wird, auch große Datenmengen über Sharding zu verteilen. Um hohe Anfragelasten abzufedern, können Daten auch auf mehrere Knoten vervielfältigt werden.
  • Einfache Bedienung
  • Schnell und dabei stabil
  • Bietet eine Vielzahl an Funktionen: Daten Roll-ups, Index-Lifecycle Management
  • Leichtes Ingestieren und Visualisieren von Daten, sowie Reporting mit Kibana
  • Vielzahl unterstützter Programmiersprachen wie Java, JavaScript (Node.js), PHP, Python und Ruby
  • 24 Textsprachen
  • kostenlos unter Apache 2-Lizenz
  • persistiert Daten, daher können diese auch für eine längerfristige Speicherung verwendet werden

Das Dashboard von KibanaDas Dashboard von Kibana | Quelle

Nachteile von Elasticsearch

Mit mehr eingesetzten Technologien wird das Setup für einen Onlineshop oder Blog entsprechend komplexer und leider steht Elasticsearch nicht in allen Umgebungen zur Verfügung. Eine Liste aller mit Elasticsearch kompatiblen Shopsysteme haben wir hier zusammengetragen.

Insbesondere einfache Managed-Hosting Umgebungen bieten nicht in allen Fällen Elasticsearch an. Auch bei selbst gehosteten Servern erzeugt die Installation und Wartung von Elasticsearch zusätzliche Aufwände, die nicht vernachlässigt werden sollten.

Wer sich von diesem zusätzlichen Aufwand nicht abschrecken lässt, wird mit Elasticsearch aber eine deutliche Beschleunigung der Suche und damit potenziell einen erkennbaren Anstieg der Conversion-Rate bemerken.

Wie funktioniert Elasticsearch?

Bei Elasticsearch werden die Rohdaten aus verschiedenen Quellen, wie beispielsweise aus Logs, Systemmetriken und Webanwendungen in einem Ingestionsprozess zusammengeführt und ggf. mit weiteren Informationen angereichert. Die Daten werden dann als JSON-Dokumente gespeichert, diese wiederum bestehen aus einem Satz an Paaren von Schlüsseln und Werten. Damit Suchanfragen später Ergebnisse ausliefern, werden die Daten indexiert, wofür Elasticsearch eine Datenstruktur namens invertierter Index verwendet.

Statt bei einer Suchanfrage alle zur Verfügung stehenden Dokumente zu untersuchen, überprüft Elasticsearch einen Index, indem zuvor alle Inhalte aufbereitet gespeichert wurden. Für diesen Prozess erstellt Elasticsearch einen (oder mehrere) Indizes, die jeweils wie eine Art Datenbank funktionieren und von der Searchengine dann später durchsucht werden.

Der so erstellte Index wird in mehrere Typen unterteilt. In diesen Indizes können nun Dokumente abgelegt werden, welche jeweils einem Typ zugeordnet werden können. Im Gegensatz zu klassischen SQL-Datenbanken haben die Dokumente allerdings kein festes Format, sondern können jeweils aus einer beliebigen Struktur von Attributen bestehen. Das ermöglicht einer schnelle Volltextsuche und die Durchsuchung von Dokumentendaten in (fast) Echtzeit.

Volltextsuche mit invertiertem Index_1Beispiel für eine Volltextsuche mit invertiertem Index | Quelle

Für das Abspeichern der Daten kann Elasticsearch den Index in mehrere "shards" (Scherben) zerlegen. Um die Auslastung zu verteilen, lassen sich diese shards auf mehrere "nodes" (Knoten) aufteilen. Dabei wird ein node als „primary node“ definiert. Für kleine und mittlere Onlineshops ist dieser Knoten in den meisten Fällen auch schon völlig ausreichend.

Shards in einem Elasticsearch ClusterShards in einem Elasticsearch Cluster | Quelle

Wer noch mehr in die Tiefe der Funktionsweise von Elasticsearch eintauchen möchte, kann sich hier zum Elasticsearch Tutorial anmelden.

Welche Shopsysteme sind mit Elasticsearch kompatibel?

Die Effizienz der Suche hängt stark von der Anbindung des jeweiligen Shops ab. Je nach eingesetzter Software wird Elasticsearch bereits nativ oder durch 3rd Party Plugins unterstützt:

| Shopsystem | Kompatibel? | Anmerkung | |-------------------------------|:----------------------:|-----------| | Magento 1 | ✓ | Über Extension | | Magento 2 - Community Edition | ✓ | Seit Magento 2.3; Wichtig: Ab Version 2.4 wird der Einsatz von Elasticsearch als Katalogsuchmaschine erzwungen! | | Magento 2 - Commerce Edition | ✓ | Seit Magento 2.1; Wichtig: Ab Version 2.4 wird der Einsatz von Elasticsearch als Katalogsuchmaschine erzwungen! | | Shopware 5 | ✓ | Ab Shopware-Version 5.5 | | Shopware 6 | ✓ | Elasticsearch 7.1 oder höher |

Shopware 5

Die Elasticsearch Integration wird seit Version 5.0 von Shopware unterstützt. In der Grundeinstellung ist die Integration allerdings deaktiviert. Um sie zu aktivieren, muss bei Shopware 5 die "config.php" um folgenden Code erweitert werden:

    'es' => [
        'enabled' => true,
        'number_of_replicas' => null,
        'number_of_shards' => null,
        'version' => '5.6.5', #<-- genutzte version einfügen
        'dynamic_mapping_enabled' => true,
        'client' => [
            'hosts' => [
                'localhost:9200'
            ]
        ]
    ],

Die Daten lassen sich mithilfe der Befehle php bin/console sw:es:index:populate und php bin/console sw:es:backend:index:populate übernehmen. Hierzu finden Sie weitere Informationen auf Shopware Developers - für Version 5 bzw. für Version 6.

Seit der Version 5.5 wurde die Elasticsearch Unterstützung stark verbessert, so können beispielsweise nun neben der Suche auch Module im Backend indexiert werden und sich dadurch erheblich beschleunigen.

Shopware 6

Auch Shopware 6 unterstützt die Verwendung von Elasticsearch. Dies Anbindung wird wie bei Shopware 6 gewohnt über die Umgebungsvariablen in der .env festgelegt werden.
Dazu werden die folgenden Variablen eingefügt:

SHOPWARE_ES_HOSTS "localhost:9200"
SHOPWARE_ES_ENABLED 1
SHOPWARE_ES_INDEXING_ENABLED 1

Anschließend sind die Befehle php bin/console es:index und php bin/console messenger:consume auszuführen, um die Indices zu füllen.

Elasticsearch 6 ist mit allen Versionen von Shopware kompatibel. Beachten Sie, dass eine Neuindexierung erforderlich sein kann, da ab Shopware 5.5.0 die Indexierung anders durchgeführt wird. Der Demoshop Shopware (hier in Version 5.5) zeigt die Elasticsearch 6 unterstützte Suchfunktion mit Autovervollständigung. Für Shopware 6 ist Elasticsearch 7.1 oder neuer notwendig.

Demo 1: Shopware 5.5 mit Elasticsearch 6

Demo 1: Shopware 5.5 mit Elasticsearch 6

Magento 1

Für Magento 1 empfehlen wir die Magento Erweiterung von Wyomind. Dieses Plugin liefert eine Elasticsearch basierte Suche mit zahlreichen zusätzlichen Funktionen wie zum Beispiel einer Autovervollständigung. Diese können Sie in dem Magento 1 Demoshop einsehen (siehe Demo 2). Nach der Eingabe des gesuchten Artikels im Suchfeld öffnet sich ein Fenster unterhalb des Suchfeldes mit Vorschlägen zur Autovervollständigung. Dabei werden sowohl die Artikelbezeichnungen, ein Vorschaubild als auch der Preis angezeigt. Diese Vorschläge können ausgewählt und angeklickt werden.

Demo 2: Magento 1 Demoshop mit Elasticsearch und Plugin Wyomind

Demo 2: Magento 1 Demoshop mit Elasticsearch und Plugin Wyomind

Die mitgelieferte Magento 1 Suche, ohne das Wyomind Plugin, enthält keine Autovervollständigung möglicher Suchergebnisse (siehe Demo 3). Es wird lediglich ein Vorschlag zur Autovervollständigung eines möglichen Suchbegriffes angeboten.

Demo 3: Standardsuchfunktion in Magento 1

Demo 3: Standardsuchfunktion in Magento 1

Magento 2

Mit Version Magento 2.3 gibt es in der Community Edition native Unterstützung für Elasticsearch - Support gibt es für Elasticsearch 6.X. In der Commerce Edition von Magento steht diese Integration dagegen bereits seit Magento 2.1 zur Verfügung. Ab der im August 2020 erscheinenden Version 2.4 wird Elasticsearch sogar eine feste Voraussetzung von Magento sein.

Weitere Funktionen sowie Unterstützung für andere Magento 2 Versionen bieten außerdem die kostenfreien Open Source Plugins Elasticsuite von Smile, Wyomind und Amasty.

Demo 4: Magento 2 Demoshop mit Elasticsuite von Smile

Demo 4: Magento 2 Demoshop mit Elasticsuite von Smile

Elasticsearch mit eigenen Anwendungen

Selbst erstellte Anwendungen (oder Anwendungen ohne existierende Integration) können ebenfalls einfach an Elasticsearch angebunden werden. Mithilfe der gut dokumentierten REST API lassen sich Daten in Elasticsearch ablegen und wiederfinden.

Neben dem einfachen String-Vergleich, kann die Elasticsearch-Suche und -Analyse mit zusätzlichen Analyseplugins erweitert werden.

  • Das Plugin "analysis-phonetic" erlaubt eine Ähnlichkeitssuche nach Aussprache durchzuführen
  • Mit dem "analysis-icu"-Plugin wird die Unterstützung von Unicode und asiatischen Sprachen verbessert
  • Hinzu kommen viele Plugins für einzelne Sprachen. So erlaubt beispielsweise das "analysis-kuromoji-readingform"-Plugin den Umgang mit den verschiedenen Schreibweisen der japanischen Sprache (Kanjis, Hiragana, Katakana und Romanji)

Alternativen zu Elasticsearch

Wer die Volltextsuche auf der eigenen Website beschleunigen möchte, kann neben Elasticsearch auch auf Solr oder Sphinx zurückgreifen.

Solr

Genau wie Elasticsearch basiert Solr auf Apache Lucene und beide werden unter derselben Apache 2.0 Lizenz angeboten. 2006 wurde Solr Open Source und wird seither aktiv von der Apache-Community unterstützt,

Solr bietet nicht nur einer sehr detaillierte Funktionsumgebung, sondern darüber hinaus auch zahlreiche verfügbare Plug-ins.

Was sind die Vorteile:

  • Schnelle Suche auch bei Millionen von Artikeln
  • Multivalue Filter
  • Hohe Performance durch lokale Installation und Enterprise NVMe SSD
  • Einfach skalierbar und fehlertolerant
  • Einfache Verwaltung über unser Managed Center
  • Ohne Unterbrechung und in Echtzeit reindexieren
  • Flexible und einfache Konfiguration

Übrigens: Bei uns können Sie Ihre Solr Suche mit wenigen Klicks einrichten.

Sphinx

Genau wie Elasticsearch ist Sphinx eine Open Source-Anwendung. Sie können damit entweder Daten, die in einer SQL-Datenbank, einem NoSQL-Speicher oder einfach nur in Dateien gespeichert sind, schnell und einfach stapelweise indizieren und durchsuchen. Alternativ indizieren und durchsuchen Sie Daten "on the fly" und arbeiten damit ähnlich wie mit einem Datenbankserver.

Die Eigenschaften von Sphinx:

  • Große Datenbestände können effizient und schnell durchsucht werden
  • Moderne Algorithmen - Stoppwörter, Stammformreduktion und Real-Time-Indexierung problemlos
  • Schnell
  • Einfaches Deployment
  • Einfache Verwaltung über unser Managed Center
  • Flexible und einfache Konfiguration

MySQL

Die MySQL Software liefert einen sehr schnellen, multithreading-fähigen, mehrbenutzerfähigen und robusten SQL (Structured Query Language) Datenbankserver. Dennoch ist Elasticsearch bei hohen Datenmengen wesentlich schneller als die Volltextsuche von MySQL, sodass die Produktsuchen wesentlich schneller ausgeführt werden können als mit herkömmlichen Suchfunktionen. Dieser Vorteil stellt sich allerdings erst mit einer höheren Anzahl an Produkten ein. Dennoch scheint die Schnelligkeit von Elasticsearch auch die Köpfe hinter Magento 2 überzeugt zu haben, denn ab Version 2.4, die für August avisiert ist, wird Elasticsearch als Suchmaschine zwingend und löst MySQL ab.

Elasticsearch bei maxcluster einrichten

Bei maxcluster lässt sich Elasticsearch leicht über das Managed Center in der gewünschten Edition installieren. Dazu wählen Sie den Menüpunkt Elasticsearch aus. Anschließend installieren Sie die gewünschte Version. Zuletzt legen Sie eine neue Instanz an, die dann von Ihrem Shopsystem verwendet werden kann.

Falls Sie für bestimmte Integrationen noch zusätzliche Plugins benötigen, können wir diese gerne auf Anfrage an support@maxcluster.de für Sie installieren.

Elasticsearch im Managed Center von maxcluster einrichten

Elasticsearch im Managed Center von maxcluster einrichten

Fazit

Mit Elasticsearch lässt sich die Suchfunktion von Onlineshops, die eine hohe Anzahl an Produkten führen, stark beschleunigen. Außerdem rentiert sich die Installation der Plugins oft bereits aufgrund der kundenfreundlichen Suche dank Autovervollständigung auch für kleine Onlineshops.

Sollten Sie Fragen zur Implementierung haben oder anderweitige Unterstützung benötigen, freuen wir uns auf Ihre Anfrage via E-Mail an support@maxcluster.de oder telefonisch unter 05251 / 41 41 30.