Übersicht
Der JSON-Konnektor bietet die Funktionalität, Daten aus lokalen JSONL-Dateien (JSON-Lines-Format) abzurufen und im Fess-Index zu registrieren.
Für diese Funktion ist das Plugin fess-ds-json erforderlich.
Voraussetzungen
Die Installation des Plugins ist erforderlich
Lesezugriff auf die JSON-Dateien ist erforderlich
Die Struktur der JSON-Daten muss bekannt sein
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 | Products JSON |
| Handler-Name | JsonDataStore |
| Aktiviert | Ein |
Parameter-Einstellungen
Lokale Datei:
Mehrere Dateien:
Verzeichnisangabe:
Parameterliste
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
files | Nein | Pfad zur zu verarbeitenden JSON-Datei (mehrere Angaben möglich: kommagetrennt). Nur Dateien mit der Erweiterung .json oder .jsonl werden verarbeitet. |
directories | Nein | Pfad zum Verzeichnis mit JSON-Dateien (mehrere Angaben möglich: kommagetrennt) |
fileEncoding | Nein | Zeichenkodierung (Standard: UTF-8) |
Warnung
Es muss entweder files oder directories angegeben werden. Wenn keiner der beiden Parameter angegeben ist (leer), wird eine DataStoreException ausgelöst. Wenn beide angegeben sind, hat files Vorrang und directories wird ignoriert.
Bemerkung
Der Parametername lautet im camelCase fileEncoding (nicht file_encoding in snake_case).
Verhalten bei Verzeichnisangabe
Wenn directories angegeben ist, werden die Dateien direkt im jeweiligen Verzeichnis nach folgenden Regeln verarbeitet:
Unterverzeichnisse werden nicht durchsucht (keine rekursive Suche).
Nur Dateien mit der Erweiterung
.jsonoder.jsonlwerden berücksichtigt (Groß-/Kleinschreibung wird nicht unterschieden).Die Dateien werden in aufsteigender Reihenfolge nach Änderungsdatum (letzter Änderungszeitpunkt) verarbeitet.
Bemerkung
Dieser Konnektor unterstützt ausschließlich JSON-Dateien im lokalen Dateisystem. HTTP-Zugriff und API-Authentifizierung werden nicht unterstützt.
Skript-Einstellungen
Die Werte der einzelnen Felder werden aus den Feldern des jeweiligen JSON-Objekts zusammengesetzt. Felder auf der obersten Ebene des JSON-Objekts können im Skript als Variablen ohne Präfix direkt referenziert werden (kein Präfix wie data.).
Einfaches JSON-Objekt:
Verschachteltes JSON-Objekt (verschachtelte Objekte werden als Map referenziert):
Verarbeitung von Array-Elementen:
Verfügbare Felder
<Feldname>- Felder auf der obersten Ebene des JSON-Objekts werden direkt beim Namen referenziert<Elternteil>.<Kind>- Felder eines verschachtelten Objekts<Array>[<Index>]- Array-Element<Array>.<Methode>- Array-Methoden (join,collect,sizeusw.)
Bemerkung
Enthält ein Feldname Leerzeichen, Bindestriche oder andere Zeichen, die als Groovy-Bezeichner ungültig sind, kann dieses Feld nicht direkt als Variablenname referenziert werden.
JSON-Format-Details
JSON-Dateiformat
Der JSON-Konnektor liest Dateien im JSONL-Format (JSON Lines). Dabei wird pro Zeile ein JSON-Objekt geschrieben. Die Datei wird zeilenweise eingelesen, und jede Zeile wird als eigenständiges JSON-Objekt verarbeitet.
Bemerkung
Dateien mit der Erweiterung .json werden ebenfalls verarbeitet, der Inhalt muss jedoch im JSONL-Format vorliegen (ein Objekt pro Zeile). JSON-Dateien im Array-Format ([{...}, {...}]) oder mehrzeilig formatierte (pretty-printed) JSON-Dateien können nicht direkt eingelesen werden. Bitte konvertieren Sie diese in das JSONL-Format.
JSONL-Datei:
Anwendungsbeispiele
Produktkatalog
Parameter:
Skript:
Integration mehrerer JSON-Dateien
Parameter:
Skript:
Fehlerbehebung
Datei nicht gefunden
Symptom: Im Protokoll wird ... is not found. oder Source file ... does not exist. ausgegeben
Prüfpunkte:
Überprüfen Sie, ob der Dateipfad korrekt ist
Überprüfen Sie, ob die Datei vorhanden ist
Überprüfen Sie, ob die Dateiendung
.jsonoder.jsonlistÜberprüfen Sie, ob Leserechte für die Datei vorhanden sind
JSON-Analysefehler
Symptom: Im Protokoll wird Crawling Access Exception zusammen mit JsonParseException o. a. ausgegeben
Enthält eine Zeile ungültige Daten, wird nur diese Zeile übersprungen und als fehlgeschlagene URL erfasst; das Crawling selbst wird ab der nächsten Zeile fortgesetzt.
Prüfpunkte:
Überprüfen Sie, ob die JSON-Datei im korrekten Format vorliegt (JSONL: ein Objekt pro Zeile):
Überprüfen Sie die Zeichenkodierung
Überprüfen Sie, ob ein einzelnes Objekt über mehrere Zeilen verteilt ist
Überprüfen Sie, ob Kommentare enthalten sind (Kommentare sind im JSON-Standard nicht erlaubt)
Keine Daten abgerufen
Symptom: Das Crawling ist erfolgreich, aber die Trefferanzahl beträgt 0
Prüfpunkte:
Überprüfen Sie die JSON-Struktur
Überprüfen Sie die Skript-Einstellungen (Felder werden ohne
data.-Präfix referenziert)Überprüfen Sie die Feldnamen (einschließlich Groß-/Kleinschreibung)
Überprüfen Sie die Protokolldateien auf Fehlermeldungen
Große JSON-Dateien
Symptom: Speichermangel oder Zeitüberschreitung
Da die Datei zeilenweise eingelesen wird, wirkt sich die Gesamtgröße der Datei nicht direkt auf den Speicherverbrauch aus. Probleme können jedoch auftreten, wenn eine einzelne Zeile (ein einzelnes Objekt) extrem groß ist oder die Last beim Indexieren sehr hoch ist.
Lösung:
Teilen Sie die JSON-Datei in mehrere Dateien auf
Erhöhen Sie die Heap-Größe von Fess
Erweiterte Skript-Beispiele
Bedingte Verarbeitung
Jedes Feld wird als eigenständiger Ausdruck ausgewertet. Für bedingte Werte verwenden Sie den ternären Operator:
Array-Verknüpfung
Standardwerte festlegen
Datumsformatierung
Numerische Verarbeitung
Referenzen
Übersicht der Datenspeicher-Konnektoren - Übersicht der Datenspeicher-Konnektoren
CSV-Konnektor - CSV-Konnektor
Datenbank-Konnektor (Datenbank-Suche) - Datenbank-Konnektor
Datenspeicher-Crawl - Datenspeicher-Konfigurationsleitfaden