Nextcloud Volltextsuche mit Elasticsearch

Die Nextcloud ist ein hervorragender Ort um eine Große Menge an Dokumenten zu speichern und diese mit Kollegen und/oder Kunden zu teilen. Und mithilfe der App „Full text search“ kann man diese vollständig durchsuchen.

  • Full text search
  • Full text search – Files
  • Full text search – Elasticsearch Platform

Installieren Sie zunächst einmal die folgenden drei Apps:

Danach muss das Elasticsearch Backend bereitgestellt werden.

Hier im Beispiel mit Docker, eine native Installation ist jedoch auch möglich.

Elasticsearch Docker Installation

Passen Sie auf dem Docker Host folgendes für den Elasticsearch Container an:

sysctl -w vm.max_map_count=262144

Erstellen Sie anschließend das Docker Projekt

mkdir /docker/elasticsearch

Erstellen Sie dann eine passende Docker-Compose Datei.

vi /docker/elasticsearch/docker-compose.yaml

Hinweis: Passen Sie den Image Tag gegebenenfalls an die neueste Version an.

Single Node Elasticsearch Docker-Compose YAML

---
services:
  elasticsearch:
    image: elasticsearch:8.12.2
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - xpack.security.enabled=false
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 127.0.0.1:9200:9200
    networks:
      - elastic
volumes:
  data01:
    driver: local

networks:
  elastic:
    driver: bridge

Starten Sie nun Elasticsearch.

docker compose up -d

Nextcloud Volltextsuche Konfiguration

Konfigurieren Sie nun Elasticsearch in der Volltextsuche App.

Gehen Sie dazu in der Nextcloud auf Verwaltungseinstellungen und dann zum Reiter Volltextsuche. Und konfigurieren Sie die App entsprechend, wie im folgenden Screenshot zu sehen.

Nextcloud Volltextsuche Indexierung

Es muss sowohl die erste Indexierung manuell ausgeführt werden als auch ein Dienst für das automatische Aktualisieren des Indexes erstellt werden.

Die erste Indexierung kann je nach Datenmenge der Nextcloud sehr lange dauern. Daher ist empfohlen, folgenden Befehl zum Beispiel in einem Screen auszuführen. Wie das geht, erfahren Sie hier in einem anderen unserer Blog Artikel.

sudo -u www-data php /var/www/nextcloud/occ fulltextsearch:index

Legen Sie einen Systemdienst an, welcher den Index automatisch um neue Dateien aktualisiert.

vi /etc/systemd/system/nextcloud-fulltext-elasticsearch-worker.service
[Unit]
Description=Elasticsearch Worker for Nextcloud Fulltext Search
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/nextcloud
ExecStart=/usr/bin/php /var/www/nextcloud/occ fulltextsearch:live -q
ExecStop=/usr/bin/php /var/www/nextcloud/occ fulltextsearch:stop
Nice=19
Restart=always

[Install]
WantedBy=multi-user.target

Dienst Autostart aktivieren und Dienst starten

systemctl enable nextcloud-fulltext-elasticsearch-worker.service
systemctl start nextcloud-fulltext-elasticsearch-worker.service

Weitere interessante Artikel zum Thema Nextcloud finden Sie hier.

Falls Sie Fragen haben oder Unterstützung bei der Einrichtung der Nextcloud Volltextsuche benötigen, können Sie uns kontaktieren.

Tim Perelli
Letzte Artikel von Tim Perelli (Alle anzeigen)