Übersicht
Der Datenbank-Konnektor bietet die Funktionalität, Daten aus JDBC-kompatiblen relationalen Datenbanken abzurufen und im Fess-Index zu registrieren.
Für diese Funktion ist das Plugin fess-ds-db erforderlich.
Unterstützte Datenbanken
Alle JDBC-kompatiblen Datenbanken werden unterstützt. Wichtige Beispiele:
MySQL / MariaDB
PostgreSQL
Oracle Database
Microsoft SQL Server
SQLite
H2 Database
Voraussetzungen
Das Plugin
fess-ds-dbmuss installiert seinEin JDBC-Treiber für die Zieldatenbank ist erforderlich
Lesezugriff auf die Datenbank ist erforderlich
Bei großen Datenmengen ist ein geeignetes Query-Design wichtig
Plugin-Installation
Methode 1: JAR-Datei direkt platzieren
Methode 2: Installation über die Administrationsoberfläche
„System“ -> „Plugins“ öffnen
JAR-Datei hochladen
Fess neu starten
JDBC-Treiber-Installation
Platzieren Sie den JDBC-Treiber für die Zieldatenbank im Classpath von Fess (Verzeichnis app/WEB-INF/lib/):
Starten Sie Fess neu, um den Treiber zu laden.
Konfiguration
Konfigurieren Sie über die Administrationsoberfläche unter „Crawler“ -> „Datenspeicher“ -> „Neu erstellen“.
Grundeinstellungen
| Einstellung | Beispielwert |
|---|---|
| Name | Products Database |
| Handler-Name | DatabaseDataStore |
| Aktiviert | Ein |
Parameter-Einstellungen
Beispiel für MySQL/MariaDB:
Beispiel für PostgreSQL:
Parameterliste
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
driver | Ja | Klassenname des JDBC-Treibers (ohne Angabe wird eine DataStoreException ausgelöst) |
url | Ja | JDBC-Verbindungs-URL (erforderlich für die Verbindung) |
sql | Ja | SQL-Query zum Abrufen der Daten (ohne Angabe wird eine DataStoreException ausgelöst) |
username | Nein | Datenbank-Benutzername |
password | Nein | Datenbank-Passwort |
fetch_size | Nein | JDBC-Fetch-Größe. Für MySQL-Streaming-Resultsets kann MIN_VALUE angegeben werden |
default_mimetype | Nein | Standard-MIME-Typ für die Inhaltsextraktion aus BLOB- und Binärspalten |
column_label.mimetype | Nein | Gibt den Spaltennamen an, der den MIME-Typ für die Extraktion aus BLOB- und Binärspalten enthält (Beispiel: column_label.mimetype=content_type) |
column_label.filename | Nein | Gibt den Spaltennamen an, der den Dateinamen für die Extraktion aus BLOB- und Binärspalten enthält (MIME-Typ wird aus der Dateiendung abgeleitet) |
info.* | Nein | Zusätzliche JDBC-Verbindungseigenschaften (Beispiel: info.ssl=true). Der Schlüssel ohne info. wird an den JDBC-Treiber übergeben |
readInterval | Nein | Verzögerung in Millisekunden zwischen der Verarbeitung jeder Zeile. Standard: 0 |
script_type | Nein | Skript-Engine-Typ. Standard: groovy |
Skript-Einstellungen
Ordnen Sie die SQL-Spaltennamen den Index-Feldern zu:
Verfügbare Felder:
<column_name>- Ergebnisspalten der SQL-Query (direkt über den Spaltenbezeichner zugänglich, ohne Präfix wiedata.)
Bemerkung
Die Spaltennamen müssen mit den Spaltenbezeichnern (Aliasnamen) in der SELECT-Klausel übereinstimmen. Bei Aggregatfunktionen oder Ausdrücken vergeben Sie mit AS einen expliziten Aliasnamen (Beispiel: COUNT(*) AS total).
Laden von BLOB- und Binärdaten
Spalten vom Typ BLOB, CLOB, NCLOB, Byte-Array oder Binär-Stream werden automatisch einer Inhaltsextraktion unterzogen (derselbe Extraktor wie beim Datei-Crawling) und als Text indiziert. Spalten vom Array-Typ werden in leerzeichengetrennte Zeichenketten umgewandelt. NULL-Werte werden zu leeren Zeichenketten.
Damit Text aus BLOB- und Binär-Streams korrekt extrahiert werden kann, muss der Datentyp (MIME-Typ) bestimmt werden. Die folgende Prioritätsreihenfolge wird verwendet:
column_label.mimetype=<Spaltenname>- Der Wert der angegebenen Spalte wird als MIME-Typ verwendetcolumn_label.filename=<Spaltenname>- Der Wert der angegebenen Spalte wird als Dateiname behandelt, der MIME-Typ wird aus der Dateiendung abgeleitetdefault_mimetype- Standard-MIME-Typ, der verwendet wird, wenn die obigen Methoden keinen Typ ergeben
Beispiel (BLOB der Spalte file_data wird mit dem MIME-Typ aus Spalte content_type extrahiert):
SQL-Query-Design
Effiziente Queries
Bei großen Datenmengen ist die Query-Performance wichtig. SQL-Abfragen werden unverändert an die Datenbank gesendet (kein Parameter-Binding):
Inkrementelles Crawling
Methode zum Abrufen nur der aktualisierten Datensätze:
URL-Generierung
Die Dokument-URL wird im Skript generiert:
Multibyte-Zeichenunterstützung
Bei der Verarbeitung von Daten mit Multibyte-Zeichen wie Japanisch:
MySQL
PostgreSQL
PostgreSQL verwendet standardmäßig UTF-8. Bei Bedarf:
Sicherheit
Schutz der Datenbank-Anmeldedaten
Warnung
Das direkte Speichern von Passwörtern in Konfigurationsdateien stellt ein Sicherheitsrisiko dar.
Empfohlene Methoden:
Umgebungsvariablen verwenden
Verschlüsselungsfunktion von Fess verwenden
Nur-Lese-Benutzer verwenden
Prinzip der minimalen Rechte
Gewähren Sie dem Datenbankbenutzer nur die minimal erforderlichen Berechtigungen:
Anwendungsbeispiele
Produktkatalog-Suche
Parameter:
Skript:
Wissensdatenbank-Artikel
Parameter:
Skript:
Fehlerbehebung
JDBC-Treiber nicht gefunden
Symptom: ClassNotFoundException oder No suitable driver
Lösung:
Überprüfen Sie, ob der JDBC-Treiber in
lib/platziert istÜberprüfen Sie, ob der Klassenname des Treibers korrekt ist
Starten Sie Fess neu
Verbindungsfehler
Symptom: Connection refused oder Authentifizierungsfehler
Zu überprüfen:
Ist die Datenbank gestartet?
Sind Hostname und Portnummer korrekt?
Sind Benutzername und Passwort korrekt?
Firewall-Einstellungen prüfen
Query-Fehler
Symptom: SQLException oder SQL-Syntaxfehler
Zu überprüfen:
Testen Sie die SQL-Query direkt in der Datenbank
Überprüfen Sie, ob die Spaltennamen korrekt sind
Überprüfen Sie, ob die Tabellennamen korrekt sind
Weiterführende Informationen
Übersicht der Datenspeicher-Konnektoren - Übersicht der Datenspeicher-Konnektoren
CSV-Konnektor - CSV-Konnektor
JSON-Konnektor - JSON-Konnektor
Datenspeicher-Crawl - Leitfaden zur Datenspeicher-Konfiguration