Descripcion General
El conector de base de datos proporciona funcionalidad para obtener datos de bases de datos relacionales compatibles con JDBC y registrarlos en el indice de Fess.
Esta funcionalidad requiere el plugin fess-ds-db.
Bases de Datos Compatibles
Compatible con todas las bases de datos que soporten JDBC. Ejemplos principales:
MySQL / MariaDB
PostgreSQL
Oracle Database
Microsoft SQL Server
SQLite
H2 Database
Requisitos Previos
Se requiere instalar el plugin
fess-ds-dbSe requiere el controlador JDBC correspondiente a la base de datos de destino
Se requiere acceso de lectura a la base de datos
Para grandes volumenes de datos, es importante un diseno de consultas apropiado
Instalacion del Plugin
Metodo 1: Colocar el archivo JAR directamente
Metodo 2: Instalar desde la consola de administracion
Abrir «Sistema» -> «Plugins»
Subir el archivo JAR
Reiniciar Fess
Instalacion del Controlador JDBC
Coloque el controlador JDBC correspondiente a la base de datos de destino en el classpath de Fess (directorio app/WEB-INF/lib/):
Despues de colocar el controlador JDBC, reinicie Fess para cargarlo.
Metodo de Configuracion
Configure desde la consola de administracion en «Rastreador» -> «Almacen de Datos» -> «Crear Nuevo».
Configuracion Basica
| Elemento | Ejemplo de Configuracion |
|---|---|
| Nombre | Products Database |
| Nombre del Manejador | DatabaseDataStore |
| Habilitado | Activado |
Configuracion de Parametros
Ejemplo MySQL/MariaDB:
Ejemplo PostgreSQL:
Lista de Parametros
| Parametro | Requerido | Descripcion |
|---|---|---|
driver | Si | Nombre de la clase del controlador JDBC (si no se especifica, se produce DataStoreException) |
url | Si | URL de conexion JDBC (obligatorio para la conexion) |
sql | Si | Consulta SQL para obtener datos (si no se especifica, se produce DataStoreException) |
username | No | Nombre de usuario de la base de datos |
password | No | Contrasena de la base de datos |
fetch_size | No | Tamano de recuperacion JDBC. Para resultados en streaming con MySQL, especifique MIN_VALUE |
default_mimetype | No | Tipo MIME predeterminado utilizado al extraer contenido de columnas BLOB o binarias |
column_label.mimetype | No | Nombre de la columna que contiene el tipo MIME utilizado para la extraccion de columnas BLOB o binarias (ej. column_label.mimetype=content_type) |
column_label.filename | No | Nombre de la columna que contiene el nombre de archivo utilizado para la extraccion de columnas BLOB o binarias (el tipo MIME se infiere a partir de la extension) |
info.* | No | Propiedades adicionales de conexion JDBC (ej. info.ssl=true). La clave sin el prefijo info. se pasa al controlador JDBC |
readInterval | No | Retardo en milisegundos entre el procesamiento de cada fila. Predeterminado: 0 |
script_type | No | Tipo de motor de scripts. Predeterminado: groovy |
Configuracion de Script
Mapee los nombres de columnas SQL a campos del indice:
Campos disponibles:
<nombre_columna>- Columnas de resultado de la consulta SQL (se accede directamente por el nombre de la etiqueta de columna; no se usa prefijo comodata.)
Nota
Los nombres de columna deben coincidir con la etiqueta de columna (alias) de la clausula SELECT. Cuando se usen funciones de agregacion o expresiones, asigne un alias explicito con AS (ej. COUNT(*) AS total).
Carga de Datos BLOB o Binarios
Las columnas de tipo BLOB, CLOB, NCLOB, arrays de bytes y flujos binarios se procesan automaticamente mediante el extractor de contenido (el mismo que se usa en el rastreo de archivos) y se incorporan como texto. Las columnas de tipo array se convierten en cadenas separadas por espacios. Los valores NULL se convierten en cadenas vacias.
Para extraer correctamente el texto de datos BLOB o flujos binarios, es necesario determinar el tipo de dato (tipo MIME). La determinacion sigue el siguiente orden de prioridad:
column_label.mimetype=<nombre_columna>- Usa el valor de la columna indicada como tipo MIMEcolumn_label.filename=<nombre_columna>- Trata el valor de la columna indicada como nombre de archivo e infiere el tipo MIME a partir de la extensiondefault_mimetype- Tipo MIME predeterminado usado cuando no se puede determinar con los metodos anteriores
Ejemplo (extraccion del BLOB de la columna file_data usando el tipo MIME de la columna content_type):
Diseno de Consultas SQL
Consultas Eficientes
Al manejar grandes cantidades de datos, el rendimiento de la consulta es importante. La consulta SQL se envia tal cual a la base de datos (no se realiza enlace de parametros):
Rastreo Incremental
Metodo para obtener solo registros actualizados:
Generacion de URLs
Las URLs de documentos se generan en el script:
Soporte de Caracteres Multibyte
Al manejar datos con caracteres multibyte como japones u otros idiomas:
MySQL
PostgreSQL
PostgreSQL normalmente usa UTF-8 de forma predeterminada. Si es necesario:
Seguridad
Proteccion de Credenciales de Base de Datos
Advertencia
Escribir contrasenas directamente en archivos de configuracion es un riesgo de seguridad.
Metodos recomendados:
Usar variables de entorno
Usar la funcion de cifrado de Fess
Usar usuarios de solo lectura
Principio de Minimo Privilegio
Otorgue solo los permisos minimos necesarios al usuario de la base de datos:
Ejemplos de Uso
Busqueda de Catalogo de Productos
Parametros:
Script:
Articulos de Base de Conocimientos
Parametros:
Script:
Solucion de Problemas
Controlador JDBC No Encontrado
Sintoma: ClassNotFoundException o No suitable driver
Solucion:
Verifique que el controlador JDBC este colocado en
lib/Verifique que el nombre de la clase del controlador sea correcto
Reinicie Fess
Error de Conexion
Sintoma: Connection refused o error de autenticacion
Verifique:
La base de datos esta en ejecucion
El nombre del host y numero de puerto son correctos
El nombre de usuario y contrasena son correctos
Configuracion del firewall
Error de Consulta
Sintoma: SQLException o error de sintaxis SQL
Verifique:
Ejecute la consulta SQL directamente en la base de datos para probar
Verifique que los nombres de columna sean correctos
Verifique que los nombres de tabla sean correctos
Informacion de Referencia
Descripcion General de los Conectores de Almacen de Datos - Descripcion General de Conectores de Almacen de Datos
Conector CSV - Conector CSV
Conector JSON - Conector JSON
Rastreo de Almacén de Datos - Guia de Configuracion de Almacen de Datos