Übersicht
Der Elasticsearch/OpenSearch-Konnektor bietet die Funktionalität, Daten aus Elasticsearch- oder OpenSearch-Clustern abzurufen und im Fess-Index zu registrieren.
Für diese Funktion ist das Plugin fess-ds-elasticsearch erforderlich.
Unterstützte Versionen
Elasticsearch 7.x / 8.x
OpenSearch 1.x / 2.x
Voraussetzungen
Die Installation des Plugins ist erforderlich
Lesezugriff auf den Elasticsearch/OpenSearch-Cluster ist erforderlich
Berechtigungen zum Ausführen von Abfragen sind erforderlich
Plugin-Installation
Methode 1: JAR-Datei direkt platzieren
Methode 2: Über die Administrationsoberfläche installieren
Öffnen Sie „System“ -> „Plugins“
Laden Sie die JAR-Datei hoch
Starten Sie Fess neu
Konfiguration
Konfigurieren Sie über die Administrationsoberfläche unter „Crawler“ -> „Datenspeicher“ -> „Neu erstellen“.
Grundeinstellungen
| Einstellung | Beispielwert |
|---|---|
| Name | External Elasticsearch |
| Handler-Name | ElasticsearchDataStore / ElasticsearchListDataStore |
| Aktiviert | Ein |
Bemerkung
ElasticsearchListDataStore ist ein erweiterter Handler von ElasticsearchDataStore, der die abgerufenen Daten als Dateiliste verarbeitet und die Indexregistrierung in mehreren Threads unterstützt. Die Anzahl der Threads kann mit dem Parameter numOfThreads angegeben werden (Standard: 1).
Parameter-Einstellungen
Einfache Verbindung:
Verbindung mit Authentifizierung:
Parameterliste
Zusätzliche Verbindungsparameter
Parameter mit dem Präfix settings. werden als Einstellungen des internen Elasticsearch/OpenSearch-Clients (fesen HTTP-Client) weitergegeben. Die wichtigsten zusätzlichen Einstellungen sind folgende:
| Parameter | Beschreibung |
|---|---|
settings.http.ssl.certificate_authorities | Pfad zur vertrauenswürdigen CA-Zertifikatsdatei (X.509-Format) für HTTPS-Verbindungen |
settings.http.compression | Ob HTTP-Komprimierung aktiviert werden soll (Standard: true) |
settings.http.proxy_host | Hostname des Proxyservers (settings.https.proxy_host ist ebenfalls möglich) |
settings.http.proxy_port | Portnummer des Proxyservers (settings.https.proxy_port ist ebenfalls möglich) |
settings.http.proxy_username | Benutzername für Proxy-Authentifizierung (settings.https.proxy_username ist ebenfalls möglich) |
settings.http.proxy_password | Passwort für Proxy-Authentifizierung (settings.https.proxy_password ist ebenfalls möglich) |
Skript-Einstellungen
Einfaches Mapping:
Zugriff auf verschachtelte Felder:
Verfügbare Felder
source.<field_name>-_source-Feld des Elasticsearch-Dokumentsid- Dokument-IDindex- Indexnamescore- Suchpunktzahlversion- DokumentversionseqNo- SequenznummerprimaryTerm- PrimärtermclusterAlias- Cluster-Alias (für Cross-Cluster-Suche)hit- SearchHit-Objekt (für fortgeschrittene Nutzung)
Query-Konfiguration
Alle Dokumente abrufen
Standardmäßig werden alle Dokumente abgerufen. Wenn der query-Parameter nicht angegeben wird, wird match_all verwendet.
Nach bestimmten Bedingungen filtern
Bereichsangabe:
Mehrere Bedingungen:
Bemerkung
Der query-Parameter akzeptiert nur den Query-Body. Der äußere {"query":...}-Wrapper ist nicht erforderlich. Such-level-Optionen wie Sortierung können in diesem Parameter nicht angegeben werden.
Nur bestimmte Felder abrufen
Abruffelder mit fields-Parameter einschränken
Um alle Felder abzurufen, fields nicht angeben oder leer lassen.
Anwendungsbeispiele
Einfaches Index-Crawling
Parameter:
Skript:
Crawling von Cluster mit Authentifizierung
Parameter:
Skript:
Crawling aus mehreren Indizes
Parameter:
Skript:
OpenSearch-Cluster crawlen
Parameter:
Skript:
Crawling mit eingeschränkten Feldern
Parameter:
Skript:
Lastverteilung über mehrere Hosts
Durch Angabe mehrerer Hosts kommagetrennt in settings.http.hosts werden Anfragen auf die einzelnen Hosts verteilt.
Parameter:
Skript:
Fehlerbehebung
Verbindungsfehler
Symptom: Connection refused oder No route to host
Zu überprüfen:
Überprüfen Sie, ob die Host-URL korrekt ist (Protokoll, Hostname, Port)
Überprüfen Sie, ob Elasticsearch/OpenSearch läuft
Überprüfen Sie die Firewall-Einstellungen
Bei HTTPS überprüfen Sie, ob das Zertifikat gültig ist
Authentifizierungsfehler
Symptom: 401 Unauthorized oder 403 Forbidden
Zu überprüfen:
Überprüfen Sie Benutzername und Passwort
Überprüfen Sie, ob der Benutzer die entsprechenden Berechtigungen hat:
Leseberechtigung auf den Index
Berechtigung zur Verwendung der Scroll-API
Bei Elasticsearch Security (X-Pack) überprüfen Sie, ob es korrekt konfiguriert ist
Index nicht gefunden
Symptom: index_not_found_exception
Zu überprüfen:
Überprüfen Sie den Indexnamen (einschließlich Groß-/Kleinschreibung)
Überprüfen Sie, ob der Index existiert:
Überprüfen Sie, ob das Wildcard-Muster korrekt ist (z.B.:
logs-*)
Query-Fehler
Symptom: parsing_exception oder search_phase_execution_exception
Zu überprüfen:
Überprüfen Sie, ob das Query-JSON korrekt ist
Überprüfen Sie, ob die Query mit der Elasticsearch/OpenSearch-Version kompatibel ist
Überprüfen Sie, ob die Feldnamen korrekt sind
Testen Sie die Query direkt in Elasticsearch/OpenSearch:
Scroll-Timeout
Symptom: No search context found oder Scroll timeout
Lösung:
Erhöhen Sie
scroll:Verringern Sie
size:Überprüfen Sie die Cluster-Ressourcen
Crawling großer Datenmengen
Symptom: Crawling ist langsam oder Timeout
Lösung:
Passen Sie
sizean (zu groß kann langsam sein):Schränken Sie abzurufende Felder mit
fieldseinFiltern Sie mit
querynur benötigte DokumenteTeilen Sie in mehrere Datenspeicher auf (nach Index, Zeitbereich usw.)
Speicherüberlauf
Symptom: OutOfMemoryError
Lösung:
Verringern Sie
sizeSchränken Sie abzurufende Felder mit
fieldseinErhöhen Sie die Heap-Größe von Fess
Schließen Sie große Felder aus (Binärdaten usw.)
SSL/TLS-Verbindung
Bei selbstsignierten Zertifikaten
Warnung
Verwenden Sie in Produktionsumgebungen ordnungsgemäß signierte Zertifikate.
Methode 1: CA-Zertifikat über den Parameter settings.http.ssl.certificate_authorities angeben (empfohlen)
Geben Sie den Pfad zur vertrauenswürdigen CA-Zertifikatsdatei (X.509-Format) an. Diese Methode hat keinen Einfluss auf den globalen Keystore von Fess.
Methode 2: Zertifikat zum Java Keystore hinzufügen
Fügen Sie das Zertifikat zum Truststore der JVM hinzu, die Fess startet.
Verbindung über Proxy
Wenn die Verbindung über einen Proxyserver erfolgt, geben Sie settings.http.proxy_host und settings.http.proxy_port an.
Erweiterte Query-Beispiele
Query mit Aggregationen
Bemerkung
Der query-Parameter akzeptiert nur den Query-Body. Aggregationen (aggs), Sortierung und andere Such-level-Optionen können nicht angegeben werden. Es werden nur Dokumente abgerufen.
Skript-Felder
Bemerkung
Elasticsearch/OpenSearch-Skriptfelder sind nicht in _source enthalten und können daher nicht über den source.*-Präfix zugegriffen werden. Um Skriptfelder zu verwenden, greifen Sie über das hit-Objekt mittels hit.getFields() zu.
Weiterführende Informationen
Übersicht der Datenspeicher-Konnektoren - Übersicht der Datenspeicher-Konnektoren
Datenbank-Konnektor - Datenbank-Konnektor
Datenspeicher-Crawl - Leitfaden zur Datenspeicher-Konfiguration