Descripción general
El conector JSON proporciona la funcionalidad para obtener datos de archivos JSONL locales (formato JSON Lines) y registrarlos en el índice de Fess.
Esta funcionalidad requiere el plugin fess-ds-json.
Requisitos previos
Es necesario instalar el plugin
Se requiere permiso de acceso a los archivos JSON
Es necesario comprender la estructura del JSON
Instalación del plugin
Método 1: Colocar el archivo JAR directamente
Método 2: Instalar desde la pantalla de administración
Abrir «Sistema» -> «Plugins»
Subir el archivo JAR
Reiniciar Fess
Método de configuración
Configure desde la pantalla de administración en «Crawler» -> «Data Store» -> «Crear nuevo».
Configuración básica
| Campo | Ejemplo de configuración |
|---|---|
| Nombre | Products JSON |
| Nombre del handler | JsonDataStore |
| Habilitado | Activado |
Configuración de parámetros
Archivo local:
Múltiples archivos:
Especificación de directorio:
Lista de parámetros
| Parámetro | Requerido | Descripción |
|---|---|---|
files | No | Ruta de los archivos JSON a procesar (se pueden especificar varios separados por comas). Solo se procesan archivos con extensión .json o .jsonl. |
directories | No | Ruta de los directorios que contienen archivos JSON (se pueden especificar varios separados por comas) |
fileEncoding | No | Codificación de caracteres (predeterminado: UTF-8) |
Advertencia
Es necesario especificar files o directories. Si no se especifica ninguno (ambos vacíos), se producirá una DataStoreException. Si se especifican ambos, files tiene prioridad y directories se ignora.
Nota
El nombre del parámetro usa camelCase: fileEncoding (no snake_case file_encoding).
Comportamiento al especificar directorios
Cuando se especifica directories, los archivos ubicados directamente en cada directorio se procesan según las siguientes reglas.
Los subdirectorios no se recorren (no se realiza búsqueda recursiva).
Solo se procesan archivos con extensión
.jsono.jsonl(sin distinguir mayúsculas de minúsculas).Los archivos se procesan en orden ascendente por fecha de modificación (hora de última modificación).
Nota
Este conector solo admite archivos JSON en el sistema de archivos local. No es compatible con acceso HTTP ni funciones de autenticación de API.
Configuración de scripts
Los valores de cada campo se construyen referenciando los valores de los campos del objeto JSON. Los campos del nivel superior del objeto JSON se pueden referenciar directamente dentro del script como variables sin prefijo (no se usa ningún prefijo como data.).
Objeto JSON simple:
Objeto JSON anidado (los objetos anidados se referencian como mapas):
Procesamiento de elementos de array:
Campos disponibles
<nombre_campo>- Referencia directa a un campo del nivel superior del objeto JSON por nombre<padre>.<hijo>- Campo de un objeto anidado<array>[<indice>]- Elemento de array<array>.<metodo>- Métodos de array (join,collect,size, etc.)
Nota
Si el nombre de un campo contiene caracteres inválidos como identificador de Groovy (espacios, guiones, etc.), ese campo no puede referenciarse directamente como nombre de variable.
Detalles del formato JSON
Formato de archivo JSON
El conector JSON lee archivos en formato JSONL (JSON Lines). Es un formato en el que se escribe un objeto JSON por línea. El archivo se lee línea a línea y cada línea se analiza como un objeto JSON independiente.
Nota
Los archivos con extensión .json también son procesados, pero su contenido debe estar en formato JSONL (un objeto por línea). Los archivos JSON en formato de array ( [{...}, {...}] ) o con formato de varias líneas (pretty-printed) no se pueden leer directamente. Conviértelos al formato JSONL.
Archivo en formato JSONL:
Ejemplos de uso
Catálogo de productos
Parámetros:
Scripts:
Integración de múltiples archivos JSON
Parámetros:
Scripts:
Solución de problemas
Archivo no encontrado
Síntoma: El registro muestra ... is not found. o Source file ... does not exist.
Puntos a verificar:
Verificar que la ruta del archivo sea correcta
Verificar que el archivo exista
Verificar que la extensión del archivo sea
.jsono.jsonlVerificar que el archivo tenga permisos de lectura
Error de análisis JSON
Síntoma: El registro muestra Crawling Access Exception y JsonParseException, entre otros
Si una línea contiene datos inválidos, solo esa línea se omite y se registra como URL fallida, y el crawling continúa desde la siguiente línea.
Puntos a verificar:
Verificar que el archivo JSON tenga el formato correcto (JSONL: un objeto por línea):
Verificar la codificación de caracteres
Verificar que un mismo objeto no esté dividido en varias líneas
Verificar que no contenga comentarios (no permitidos en el estándar JSON)
No se obtienen datos
Síntoma: El crawling se completa con éxito pero el recuento es 0
Puntos a verificar:
Verificar la estructura JSON
Verificar que la configuración de scripts sea correcta (que las referencias a campos no tengan el prefijo
data.)Verificar los nombres de campo (incluyendo mayúsculas y minúsculas)
Verificar los mensajes de error en los registros
Archivos JSON grandes
Síntoma: Falta de memoria o tiempo de espera agotado
El archivo se lee línea a línea, por lo que el tamaño total del archivo no afecta directamente al uso de memoria. Sin embargo, pueden surgir problemas si una sola línea (un objeto) es extremadamente grande o si la carga de indexación es elevada.
Solución:
Dividir el archivo JSON en varios archivos
Aumentar el tamaño del heap de Fess
Uso avanzado de scripts
Procesamiento condicional
Cada campo se evalúa como una expresión independiente. Para valores condicionales, utilice el operador ternario:
Unión de arrays
Configuración de valores predeterminados
Formato de fechas
Procesamiento de números
Información de referencia
Descripción General de los Conectores de Almacén de Datos - Descripción general de conectores de Data Store
Conector CSV - Conector CSV
Conector de Base de Datos (Búsqueda en Bases de Datos) - Conector de base de datos
Rastreo de Almacén de Datos - Guía de configuración de Data Store