How-to: Mit Elasticsearch Webinhalte in Magnolia CMS indexieren

Die Qualität der Web-Suchfunktion kann darüber entscheiden, wie lange ein User auf der Website verweilt. Insbesondere auf Webseiten mit großen und verschiedenartigen Datenmengen sind Suchmaschinen ein ausschlaggebender Faktor und stellen Content Management Systeme wie beispielsweise Magnolia CMS immer wieder vor Herausforderungen. Website Suchmaschinen existieren bereits seit vielen Jahren und sind elementare Bestandteile jeder Web- oder E-Commerce Site, doch erst eine gut durchdachte Suchlogik mit einem angemessenen Spektrum an Möglichkeiten und der guten Qualität der Suchergebnisse bedient die wachsenden Ansprüche des Users.

Suchmaschinen in Magnolia CMS

Magnolia CMS unterstützt derzeit zwei Suchmaschinen. Eine davon ist die standardmäßig eingebaute Suche, wobei die Daten aus dem Java Content Repository (JCR) in einem Apache Lucene-basierten Indexer abgelegt werden. Hierbei stößt man jedoch relativ schnell an Grenzen. Die zweite ist das Apache Solr Plugin, welche ebenfalls auf Apache Lucene beruht und deutlich mehr Funktionen und Möglichkeiten bietet. Neben Solr ist Elasticsearch eine der weltweit führenden Enterprise Suchmaschinen. Apache Solr als auch Elasticsearch verfolgen das gemeinsames Ziel, das beste Ergebnis für eine Suchanfrage auszuliefern.

Auch seitens der Kunden der Neofonie erfreut sich die Kombination von Magnolia CMS mit Elasticsearch wachsender Beliebtheit. Das war für ein Entwicklerteam der Neofonie Grund genug, ein Elasticsearch-Magnolia-Modul zu entwickeln. Das technisches Konzept sieht vor, Magnolia Autoren- und Public-Instanzen mit mehreren Elasticsearch Instanzen zu verbinden, um die Speicherung von Inhalten und Mediendateien im Index zu ermöglichen und diesen der Website Suchmaschine und somit dem User wieder zur Verfügung zu stellen.

Indexierung und Inhaltssuche in Magnolia mit Elasticsearch

Wie Inhalte in Magnolia mit Elasticsearch indexiert und gesucht werden können, zeigt die folgende Schritt-für-Schritt Anleitung. Als Beispiel kommen Tourdaten der bekannten Magnolia Reise Demo zum Einsatz.

     1. Die Configuration App öffnen und einen neuen Index zu /modules/neofonie-module-elasticsearch/config/indexJob hinzufügen.

     2. Den example pages index job kopieren und die Einstellungen anpassen. Dabei den workspace und den docType auswählen.

    2.1 In targets können diverse Indexe definiert werden, standardmäßig ist localhost:9200 (Kopie von pages) eingestellt.

    2.3 In exclude kann eingestellt werden, welche Felder, Bereiche oder Komponenten nicht indexiert werden solle.

     3. Field mappings konfigurieren
    Diese Information wird verwendet, um in Elasticsearch das mapping schema zu erzeugen. Angegebene Feldnamen werden standardmäßig mit dem gleichen Namen als Datentyp String im Elasticsearch index abgelegt. Folgenden Optionen sind möglich:

    3.1 type: der gewünschte Datentyp für das Feld

    3.2 magnoliaType: Im Fall eines special type wird aktuell uuid unterstützt und ist für die Verwendung mit Magnolia uuids gedacht. Im Fall mehrerer uuids werden diese als ein Array an Elasticsearch übertragen und nicht als verknüpfter String.

    3.3 elasticsearchName: Feldname in Elasticsearch

    3.4 Jedes weitere Feld, welches als Mapping-Parameter in Elasticsearch verwendet wird, wie z.B. index mit dem Wert not_analyzed oder include_in_all mit dem Wert false. Weitere Details auf elastic.co

     4. Wenn Sie die Option cron hinzufügen, wird der Index jedes Mal aktualisiert, in diesem Beispiel alle 10 Minuten. Die Syntax ist ähnlich wie bei cron unter Linux und es können auch Angaben in Sekunden gemacht werden.

     5. Eine neue Seite aus dem Template Elasticsearch Results hinzufügen.

    5.1 Workspace konfigurieren

    5.2 Elasticsearch Felder dem Template zuweisen

     6. Kategorie Facette hinzufügen

     7. Fertig

    Elasticsearch Modul für Magnolia CMS

    Mit dem Elasticsearch Modul für das Content Management System Magnolia CMS können über eine einfache Schnittstelle Textdateien und Daten einfach indexiert und performant in individuellen Suchergebnisslisten ausgespielt werden. Damit gelangt der Website-Nutzer schneller zum gewünschten Suchobjekt.

     

    Veröffentlichung am 20. Januar 2017, aktualisiert am 12. Oktober 2020