Elasticsearch
Elasticsearch treibt die seitenweite Volltextsuche. Plugins registrieren Such-Indizes — Blog-Artikel, Produkte, Seiten, PDFs — und der Scheduler fuettert Dokumente zeitgesteuert in Elasticsearch. Der Elasticsearch-Admin-Screen laesst dich pruefen, ob der Cluster erreichbar ist, was indiziert ist, einen Reindex anstossen und einen Index leeren, falls du neu beginnen willst.
Oeffne Einstellungen → Elasticsearch. Der Screen hat drei Tabs.

Tab 1 — Status
Der Status-Tab zeigt die Cluster-Gesundheit auf einen Blick.

| Karte | Bedeutung |
|---|---|
| Status | Verbunden (gruen) oder Getrennt (rot). |
| Cluster | Cluster-Name, wie Elasticsearch ihn meldet. |
| Gesundheit | green, yellow oder red. yellow heisst ueblicherweise nicht zugewiesene Replikas auf Einzel-Knoten-Entwicklung — ok. red heisst Daten fehlen oder Cluster ist kaputt. |
| Knoten | Anzahl Knoten im Cluster. |
Ist Status = Getrennt, zeigt die Karte den Fehler in einem roten Banner. Typische Ursachen: Host/Port falsch, API-Schluessel abgelaufen, Firewall blockt ausgehendes TLS.
Tab 2 — Indizes
Listet jeden im CMS registrierten Index. Jedes Plugin, das ein searchIndex/-Verzeichnis mitliefert, traegt einen oder mehrere Indizes bei.

Pro Index siehst du:
| Spalte | Zweck |
|---|---|
| Name | Interner Identifier (z.B. blog, products, pages, pdf). |
| Plugin | Welches Plugin hat den Index registriert. |
| Beschreibung | Was der Index abdeckt. |
| Dokumente | Wie viele Dokumente im Index liegen. |
| Groesse | Plattenbelegung laut Elasticsearch. |
| Zuletzt indiziert | Zeitstempel des letzten erfolgreichen Reindex. |
| ES aktiv / Nicht in ES | Ob Elasticsearch diesen Index tatsaechlich hat (gegen die CMS-Registrierung). |
Eingebaute Indizes
| Index | Quelle |
|---|---|
blog | Blog-Artikel — Titel, Untertitel, Body. |
products | Native-Shop-Produkte (ohne E-Learning-Kurse). |
pages | Oeffentliche Seiten — per HTTP + DOMDocument gescraped. |
pdf | PDFs aus dem Media Manager — geparst mit smalot/pdfparser. |
Reindex anstossen
Klick auf das Auffrischen-Icon Neu indexieren in einer Zeile. Setzt last_indexed_at des Index in der DB auf NULL. Der naechste Lauf des Elasticsearch-Reindex-Tasks (alle 60 Sekunden — siehe Task-Manager) nimmt die Anforderung auf und baut neu.
Reindex ist asynchron:
- Der Task-Runner bearbeitet einen Index pro Lauf — eine Warteschlange mehrerer Indizes arbeitet sich in 1-pro-Minute ab.
- Fortschritt wird nicht live angezeigt — Tab neu laden, um Dokumente und Zuletzt indiziert zu aktualisieren.
- Bei grossen Indizes mehrere Minuten einplanen.
Index loeschen
Klick auf das Muell-Icon Löschen. Der Index wird aus Elasticsearch entfernt, das CMS liefert keine Suchergebnisse mehr fuer diese Domaene. Die Registrierung bleibt — ein spaeterer Reindex legt den leeren Index neu an und fuettert ihn.
Loeschung ist nicht weich
Loeschung leert die Elasticsearch-Seite sofort. Suchanfragen fuer diese Domaene liefern leer, bis der naechste Reindex fertig ist.
Tab 3 — Einstellungen
Verbindungsdaten zum Elasticsearch-Cluster.
| Feld | Zweck |
|---|---|
| Host | Hostname oder IP des Clusters, z.B. search.example.com. |
| Port | Meist 9200 fuer einfaches TLS, 443 fuer Cluster hinter Reverse-Proxy. |
| SSL verwenden | HTTPS vs HTTP. HTTPS ist Norm. |
| API-Schluessel | Base64-kodierter Elasticsearch-API-Schluessel, in Kibana generiert. AES-256-CBC verschluesselt gespeichert. |
| Index-Prefix | Namespace fuer alle Indizes, z.B. mysite_. Vermeidet Kollisionen in geteilten Clustern. |
Klick Speichern. Aenderungen greifen sofort beim naechsten API-Aufruf.
Verbindung testen
Der Verbunden-Badge im Status-Tab ist der Live-Test. Zeigt er nach Einstellungs-Aenderungen weiterhin Getrennt mit gleichem Fehler, sind die neuen Zugangsdaten auch falsch.
Selbstsignierte Zertifikate
Fuer Entwicklungs-Cluster mit selbstsignierten Zertifikaten: Der Client sendet mit CURLOPT_SSL_VERIFYPEER = false. Produktion muss ein echtes Zertifikat haben.
Wie der Such-Endpunkt arbeitet
Das Frontend trifft /api/elasticsearch/search?q=...&lang=...:
- Multi-Match ueber Felder mit Gewichtungen (
title^5,h1^4,subtitle^3,h2^2.5,body^1). - Sprach-Filter via
initLanguages()aus dem CMS. - Unscharfe Suche fuer Tippfehler.
Such-Verhalten wird nicht aus der Admin-UI konfiguriert — die Frontend-Widgets (das Elasticsearch-Uebersichts-Widget und das Suchleisten-Widget) exponieren die relevanten Knoepfe (Ergebnisse pro Seite, Filter, UX).
Haeufige Fehler
Status ist Getrennt mit "401 Unauthorized". API-Schluessel falsch oder abgelaufen. Neuen in Kibana generieren und in den Einstellungen eintragen.
Status ist Verbunden, Index zeigt "Nicht in ES". Index wurde nie gebaut. Klick Neu indexieren und warte auf den naechsten Scheduler-Tick.
Reindex zeigt "Letzter Lauf zu lange her", Dokumente bleibt 0. Wahrscheinlich feuert der Task-Runner-Cron nicht. Pruef Task-Manager → Systemstatus → Letzter Cron-Lauf.
"Connection refused" oder 30-Sekunden-Timeouts. Cluster nicht erreichbar oder ueberlastet. Firewall und Cluster-Gesundheit in Kibana pruefen.
Siehe auch
- Task-Manager — die geplante Reindex-Aufgabe liegt dort.
- Cache — nicht verwandt; Suche nutzt den Response-Cache nicht.
- Frontend-Widgets: Elasticsearch-Uebersicht, Suchleiste — Teil der Pagebuilder-Widget-Bibliothek.