Übersicht
Der Datenbank-Konnektor bietet die Funktionalität, Daten aus JDBC-kompatiblen relationalen Datenbanken abzurufen und im Fess-Index zu registrieren.
Diese Funktion ist in Fess integriert und erfordert kein zusätzliches Plugin.
Unterstützte Datenbanken
Alle JDBC-kompatiblen Datenbanken werden unterstützt. Wichtige Beispiele:
MySQL / MariaDB
PostgreSQL
Oracle Database
Microsoft SQL Server
SQLite
H2 Database
Voraussetzungen
Ein JDBC-Treiber ist erforderlich
Lesezugriff auf die Datenbank ist erforderlich
Bei großen Datenmengen ist ein geeignetes Query-Design wichtig
Installation des JDBC-Treibers
Platzieren Sie den JDBC-Treiber im lib/-Verzeichnis:
# Beispiel: MySQL-Treiber
cp mysql-connector-java-8.0.33.jar /path/to/fess/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:
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC
username=fess_user
password=your_password
sql=SELECT id, title, content, url, updated_at FROM articles WHERE deleted = 0
Beispiel für PostgreSQL:
driver=org.postgresql.Driver
url=jdbc:postgresql://localhost:5432/mydb
username=fess_user
password=your_password
sql=SELECT id, title, content, url, updated_at FROM articles WHERE deleted = false
Parameterliste
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
driver | Ja | Klassenname des JDBC-Treibers |
url | Ja | JDBC-Verbindungs-URL |
username | Ja | Datenbank-Benutzername |
password | Ja | Datenbank-Passwort |
sql | Ja | SQL-Query zum Abrufen der Daten |
fetch.size | Nein | Fetch-Größe (Standard: 100) |
Skript-Einstellungen
Ordnen Sie die SQL-Spaltennamen den Index-Feldern zu:
url="https://example.com/articles/" + data.id
title=data.title
content=data.content
lastModified=data.updated_at
Verfügbare Felder:
data.<column_name>- Ergebnisspalten der SQL-Query
SQL-Query-Design
Effiziente Queries
Bei großen Datenmengen ist die Query-Performance wichtig:
# Effiziente Query mit Index-Nutzung
SELECT id, title, content, url, updated_at
FROM articles
WHERE updated_at >= :last_crawl_date
ORDER BY id
Inkrementelles Crawling
Methode zum Abrufen nur der aktualisierten Datensätze:
# Filterung nach Aktualisierungsdatum
sql=SELECT * FROM articles WHERE updated_at >= '2024-01-01 00:00:00'
# Bereichsangabe nach ID
sql=SELECT * FROM articles WHERE id > 10000
URL-Generierung
Die Dokument-URL wird im Skript generiert:
# Festes Muster
url="https://example.com/article/" + data.id
# Kombination mehrerer Felder
url="https://example.com/" + data.category + "/" + data.slug
# In der Datenbank gespeicherte URL verwenden
url=data.url
Multibyte-Zeichenunterstützung
Bei der Verarbeitung von Daten mit Multibyte-Zeichen wie Deutsch oder Japanisch:
MySQL
url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8
PostgreSQL
PostgreSQL verwendet standardmäßig UTF-8. Bei Bedarf:
url=jdbc:postgresql://localhost:5432/mydb?charSet=UTF-8
Connection-Pooling
Bei der Verarbeitung großer Datenmengen sollten Sie Connection-Pooling in Betracht ziehen:
# Einstellungen bei Verwendung von HikariCP
datasource.class=com.zaxxer.hikari.HikariDataSource
pool.size=5
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:
-- MySQL-Beispiel
CREATE USER 'fess_user'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT ON mydb.articles TO 'fess_user'@'localhost';
Anwendungsbeispiele
Produktkatalog-Suche
Parameter:
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/shop
username=fess_user
password=password
sql=SELECT p.id, p.name, p.description, p.price, c.name as category, p.updated_at FROM products p JOIN categories c ON p.category_id = c.id WHERE p.active = 1
Skript:
url="https://shop.example.com/product/" + data.id
title=data.name
content=data.description + " Kategorie: " + data.category + " Preis: " + data.price + " EUR"
lastModified=data.updated_at
Wissensdatenbank-Artikel
Parameter:
driver=org.postgresql.Driver
url=jdbc:postgresql://localhost:5432/knowledge
username=fess_user
password=password
sql=SELECT id, title, body, tags, author, created_at, updated_at FROM articles WHERE published = true ORDER BY id
Skript:
url="https://kb.example.com/article/" + data.id
title=data.title
content=data.body
digest=data.tags
author=data.author
created=data.created_at
lastModified=data.updated_at
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