Descripcion general
El conector JSON proporciona la funcionalidad para obtener datos de archivos JSONL locales (formato JSON Lines) y registrarlos en el indice 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
Instalacion del plugin
Metodo 1: Colocar el archivo JAR directamente
Metodo 2: Instalar desde la pantalla de administracion
Abrir «Sistema» -> «Plugins»
Subir el archivo JAR
Reiniciar Fess
Metodo de configuracion
Configure desde la pantalla de administracion en «Crawler» -> «Data Store» -> «Crear nuevo».
Configuracion basica
| Campo | Ejemplo de configuracion |
|---|---|
| Nombre | Products JSON |
| Nombre del handler | JsonDataStore |
| Habilitado | Activado |
Configuracion de parametros
Archivo local:
Multiples archivos:
Especificacion de directorio:
Lista de parametros
| Parametro | Requerido | Descripcion |
|---|---|---|
files | No | Ruta de los archivos JSON a procesar (se pueden especificar varios separados por comas). Solo se procesan archivos con extension .json o .jsonl. |
directories | No | Ruta de los directorios que contienen archivos JSON (se pueden especificar varios separados por comas) |
fileEncoding | No | Codificacion de caracteres (predeterminado: UTF-8) |
Advertencia
Es necesario especificar files o directories. Si no se especifica ninguno (ambos vacios), se producira una DataStoreException. Si se especifican ambos, files tiene prioridad y directories se ignora.
Nota
El nombre del parametro 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 segun las siguientes reglas.
Los subdirectorios no se recorren (no se realiza busqueda recursiva).
Solo se procesan archivos con extension
.jsono.jsonl(sin distinguir mayusculas de minusculas).Los archivos se procesan en orden ascendente por fecha de modificacion (hora de ultima modificacion).
Nota
Este conector solo admite archivos JSON en el sistema de archivos local. No es compatible con acceso HTTP ni funciones de autenticacion de API.
Configuracion 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 ningun 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>- Metodos de array (join,collect,size, etc.)
Nota
Si el nombre de un campo contiene caracteres invalidos 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 linea. El archivo se lee linea a linea y cada linea se analiza como un objeto JSON independiente.
Nota
Los archivos con extension .json tambien son procesados, pero su contenido debe estar en formato JSONL (un objeto por linea). Los archivos JSON en formato de array ( [{...}, {...}] ) o con formato de varias lineas (pretty-printed) no se pueden leer directamente. Conviertelos al formato JSONL.
Archivo en formato JSONL:
Ejemplos de uso
Catalogo de productos
Parametros:
Scripts:
Integracion de multiples archivos JSON
Parametros:
Scripts:
Solucion de problemas
Archivo no encontrado
Sintoma: 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 extension del archivo sea
.jsono.jsonlVerificar que el archivo tenga permisos de lectura
Error de analisis JSON
Sintoma: El registro muestra Crawling Access Exception y JsonParseException, entre otros
Si una linea contiene datos invalidos, solo esa linea se omite y se registra como URL fallida, y el crawling continua desde la siguiente linea.
Puntos a verificar:
Verificar que el archivo JSON tenga el formato correcto (JSONL: un objeto por linea):
Verificar la codificacion de caracteres
Verificar que un mismo objeto no este dividido en varias lineas
Verificar que no contenga comentarios (no permitidos en el estandar JSON)
No se obtienen datos
Sintoma: El crawling se completa con exito pero el recuento es 0
Puntos a verificar:
Verificar la estructura JSON
Verificar que la configuracion de scripts sea correcta (que las referencias a campos no tengan el prefijo
data.)Verificar los nombres de campo (incluyendo mayusculas y minusculas)
Verificar los mensajes de error en los registros
Archivos JSON grandes
Sintoma: Falta de memoria o tiempo de espera agotado
El archivo se lee linea a linea, por lo que el tamano total del archivo no afecta directamente al uso de memoria. Sin embargo, pueden surgir problemas si una sola linea (un objeto) es extremadamente grande o si la carga de indexacion es elevada.
Solucion:
Dividir el archivo JSON en varios archivos
Aumentar el tamano del heap de Fess
Uso avanzado de scripts
Procesamiento condicional
Cada campo se evalua como una expresion independiente. Para valores condicionales, utilice el operador ternario:
Union de arrays
Configuracion de valores predeterminados
Formato de fechas
Procesamiento de numeros
Informacion de referencia
Descripcion General de los Conectores de Almacen de Datos - Descripcion general de conectores de Data Store
Conector CSV - Conector CSV
Conector de Base de Datos - Conector de base de datos
Rastreo de Almacén de Datos - Guia de configuracion de Data Store