Elasticsearch in Nextcloud 13 einbinden

Suchfunktionen im Allgemeinen sind manchmal mehr Schmerz als Hilfe (siehe Microsofts Bing ?‍♂️). Oft findet man Dinge die man sucht nicht, oder aber Dinge, die man gar nicht gesucht hat.
Wer viele Dateien in seiner Nextcloud nutzt, kann natürlich auch schnell den Überblick verlieren.

Mit Elasticsearch gibt es eine mächtige und trotzdem sehr schnelle auf Java basierende Suche, die sich mittels Erweiterungen auch in Nextcloud integrieren lässt.

Elasticsearch installieren

Elasticsearch benötigt zum ausführen eine Java-Umgebung. Folgende Anleitung beschreibt wie die Installation unter Debian aussieht.
Dort lässt sich ohne weiteres hinzufügen von Repositorys das OpenJDK installieren.

apt-get install openjdk-8-jre

Ein ausführen von java -version sollte anschließend wie folgt aussehen:

root@hive:/# java -versionopenjdk version "1.8.0_171"OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-1~deb9u1-b11)OpenJDK 64-Bit Server VM (build 25.171-b11, mixed mode)

Anschließend richten wir das Repository für Elasticsearch ein und installieren die Suche. Dies geschieht mittels folgenden Befehlen.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -apt-get install apt-transport-httpsecho "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-6.x.listapt-get update && sudo apt-get install elasticsearchsystemctl enable elasticsearchsystemctl start elasticsearch

Sofern die Installation von Elasticsearch erfolgreich war, sollte ein curl -X GET „localhost:9200/“ nun folgendes ausgeben:

root@hive:/# curl -X GET "localhost:9200/"{  "name" : "fhCp22D",  "cluster_name" : "elasticsearch",  "cluster_uuid" : "LVEyx6SIREq5FPX1ee5TgA",  "version" : {    "number" : "6.3.0",    "build_flavor" : "default",    "build_type" : "deb",    "build_hash" : "424e937",    "build_date" : "2018-06-11T23:38:03.357887Z",    "build_snapshot" : false,    "lucene_version" : "7.3.1",    "minimum_wire_compatibility_version" : "5.6.0",    "minimum_index_compatibility_version" : "5.0.0"  },  "tagline" : "You Know, for Search"}

Damit auch PDF, XML und weitere Dateien indexiert werden können, muss noch ein Plugin für Elasticsearch installiert werden:

/usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment

Öffnet nun die Konfiguration von Elasticsearch unter /etc/elasticsearch/elasticsearch.yml und setzt die Variable network.host auf 127.0.0.1

Anschließend Elasticsearch einmal neustarten und mittels netstat prüfen, ob Elasticsearch und Java auf den Ports 9200 und 9300 lauschen.

Nextcloud konfigurieren

Widmen wir uns nun der Nextcloud. Wir benötigen drei Erweiterungen aus dem Appstore.

Installiert werden müssen die folgenden drei:

Nach Aktivierung, wechselt in den Einstellungen in den Bereich der Volltextsuche.
Als Search Plattform wählt ihr Elasticsearch aus, die Address of the Servlet lautet http://localhost:9200/ und den Index könnt ihr frei benennen. Bei mehreren Nextcloud-Instanzen macht ein eindeutiger Index natürlich deutlich Sinn, bei mir lautet dieser beispielsweise nc_cloud1.

Abschließend muss die Indexierung einmalig mittels occ gestartet werden:

./occ fulltextsearch:index

Zudem ist es erforderlich, dass nach einer Aktualisierung der Erweiterung der Index einmal zurückgesetzt und neu indexiert wird:

./occ fulltextsearch:reset./occ fulltextsearch:index

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Nächster Beitrag:

SLEMP 0.5 - Sicherer LEMP-Server

SLEMP 0.5 - Sicherer LEMP-Server