Übersicht
Der JSON-Konnektor bietet die Funktionalität, Daten aus JSON-Dateien oder JSON-APIs 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
Zugriff auf die JSON-Datei oder API ist erforderlich
Die JSON-Struktur muss bekannt sein
Plugin-Installation
Methode 1: JAR-Datei direkt platzieren
# Von Maven Central herunterladen
wget https://repo1.maven.org/maven2/org/codelibs/fess/fess-ds-json/X.X.X/fess-ds-json-X.X.X.jar
# Platzieren
cp fess-ds-json-X.X.X.jar $FESS_HOME/app/WEB-INF/lib/
# oder
cp fess-ds-json-X.X.X.jar /usr/share/fess/app/WEB-INF/lib/
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:
files=/path/to/data.json
fileEncoding=UTF-8
Mehrere Dateien:
files=/path/to/data1.json,/path/to/data2.json
fileEncoding=UTF-8
Parameterliste
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
files | Ja | Pfad zur JSON-Datei (mehrere kommagetrennt) |
fileEncoding | Nein | Zeichenkodierung (Standard: UTF-8) |
Skript-Einstellungen
Einfaches JSON-Objekt:
url="https://example.com/product/" + data.id
title=data.name
content=data.description
price=data.price
category=data.category
Verschachteltes JSON-Objekt:
url="https://example.com/product/" + data.id
title=data.product.name
content=data.product.description
price=data.product.pricing.amount
author=data.product.author.name
Array-Elemente verarbeiten:
url="https://example.com/article/" + data.id
title=data.title
content=data.body
tags=data.tags.join(", ")
categories=data.categories[0].name
Verfügbare Felder
data.<Feldname>- Felder des JSON-Objektsdata.<Parent>.<Child>- Verschachtelte Objektedata.<Array>[<Index>]- Array-Elementedata.<Array>.<Methode>- Array-Methoden (join, length usw.)
JSON-Format-Details
Einfaches Array
[
{
"id": 1,
"name": "Product A",
"description": "Description A",
"price": 1000
},
{
"id": 2,
"name": "Product B",
"description": "Description B",
"price": 2000
}
]
Parameter:
Verschachtelte Struktur
{
"data": {
"products": [
{
"id": 1,
"name": "Product A",
"details": {
"description": "Description A",
"price": 1000,
"category": {
"id": 10,
"name": "Electronics"
}
}
}
]
}
}
Parameter:
Skript:
url="https://example.com/product/" + data.id
title=data.name
content=data.details.description
price=data.details.price
category=data.details.category.name
Komplexes Array
{
"articles": [
{
"id": 1,
"title": "Article 1",
"content": "Content 1",
"tags": ["tag1", "tag2", "tag3"],
"author": {
"name": "John Doe",
"email": "john@example.com"
}
}
]
}
Parameter:
Skript:
url="https://example.com/article/" + data.id
title=data.title
content=data.content
author=data.author.name
tags=data.tags.join(", ")
Anwendungsbeispiele
Mehrere JSON-Dateien zusammenführen
Parameter:
files=/var/data/data1.json,/var/data/data2.json
fileEncoding=UTF-8
Skript:
url="https://example.com/item/" + data.id
title=data.title
content=data.content
Fehlerbehebung
Datei nicht gefunden
Symptom: FileNotFoundException oder 404 Not Found
Zu überprüfen:
Überprüfen Sie, ob der Dateipfad oder die url korrekt ist
Überprüfen Sie, ob die Datei existiert
Bei urls überprüfen Sie, ob die API verfügbar ist
Überprüfen Sie die Netzwerkverbindung
JSON-Parsing-Fehler
Symptom: JsonParseException oder Unexpected character
Zu überprüfen:
Überprüfen Sie, ob die JSON-Datei korrekt formatiert ist:
# JSON validieren cat data.json | jq .
Überprüfen Sie die Zeichenkodierung
Überprüfen Sie auf ungültige Zeichen oder Zeilenumbrüche
Überprüfen Sie, ob Kommentare enthalten sind (im JSON-Standard sind Kommentare nicht erlaubt)
Keine Daten abrufbar
Symptom: Crawling erfolgreich, aber 0 Einträge
Zu überprüfen:
Überprüfen Sie die JSON-Struktur
2. Überprüfen Sie die Skript-Einstellungen 4. Überprüfen Sie die Feldnamen (einschließlich Groß-/Kleinschreibung) 5. Überprüfen Sie die Logs auf Fehlermeldungen
Array-Verarbeitung
Wenn JSON ein Array ist:
[
{"id": 1, "name": "Item 1"},
{"id": 2, "name": "Item 2"}
]
Parameter:
Wenn JSON ein Objekt mit Array ist:
{
"items": [
{"id": 1, "name": "Item 1"},
{"id": 2, "name": "Item 2"}
]
}
Parameter:
Große JSON-Dateien
Symptom: Speicherüberlauf oder Timeout
Lösung:
Teilen Sie die JSON-Datei in mehrere auf
Extrahieren Sie mit JSONPath nur benötigte Teile
Bei APIs Paginierung verwenden
Erhöhen Sie die Heap-Größe von Fess
Erweiterte Skript-Beispiele
Bedingte Verarbeitung
if (data.status == "published" && data.price > 1000) {
url="https://example.com/product/" + data.id
title=data.name
content=data.description
price=data.price
}
Arrays kombinieren
url="https://example.com/article/" + data.id
title=data.title
content=data.content
tags=data.tags ? data.tags.join(", ") : ""
categories=data.categories.map(function(c) { return c.name; }).join(", ")
Standardwerte setzen
url="https://example.com/item/" + data.id
title=data.title || "Ohne Titel"
content=data.description || data.summary || "Keine Beschreibung"
price=data.price || 0
Datumsformatierung
url="https://example.com/post/" + data.id
title=data.title
content=data.body
created=data.created_at
last_modified=data.updated_at
Zahlenverarbeitung
url="https://example.com/product/" + data.id
title=data.name
content=data.description
price=parseFloat(data.price)
stock=parseInt(data.stock_quantity)
Weiterführende Informationen
Übersicht der Datenspeicher-Konnektoren - Übersicht der Datenspeicher-Konnektoren
CSV-Konnektor - CSV-Konnektor
Datenbank-Konnektor - Datenbank-Konnektor
Datenspeicher-Crawl - Leitfaden zur Datenspeicher-Konfiguration