Descripcion general
El conector Elasticsearch/OpenSearch proporciona la funcionalidad para obtener datos de un cluster de Elasticsearch u OpenSearch y registrarlos en el indice de Fess.
Esta funcionalidad requiere el plugin fess-ds-elasticsearch.
Versiones compatibles
Elasticsearch 7.x / 8.x
OpenSearch 1.x / 2.x
Requisitos previos
Es necesario instalar el plugin
Se requiere acceso de lectura al cluster de Elasticsearch/OpenSearch
Se necesitan permisos para ejecutar consultas
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
Configuracion
Configure desde la pantalla de administracion en «Crawler» -> «Data Store» -> «Crear nuevo».
Configuracion basica
| Campo | Ejemplo |
|---|---|
| Nombre | External Elasticsearch |
| Handler | ElasticsearchDataStore / ElasticsearchListDataStore |
| Habilitado | Activado |
Nota
ElasticsearchListDataStore es una extension de ElasticsearchDataStore que procesa los datos obtenidos como una lista de archivos y soporta el registro en el indice con multiples hilos. El numero de hilos se puede especificar con el parametro numOfThreads (predeterminado: 1).
Configuracion de parametros
Conexion basica:
Conexion con autenticacion:
Lista de parametros
Parametros adicionales de conexion
Los parametros con el prefijo settings. se pasan como configuracion del cliente interno de Elasticsearch/OpenSearch (cliente HTTP de fesen). Las principales configuraciones adicionales son las siguientes.
| Parametro | Descripcion |
|---|---|
settings.http.ssl.certificate_authorities | Ruta al archivo de certificado CA de confianza (formato X.509) para conexiones HTTPS |
settings.http.compression | Si se habilita la compresion HTTP (predeterminado: true) |
settings.http.proxy_host | Nombre de host del servidor proxy (tambien se puede especificar settings.https.proxy_host) |
settings.http.proxy_port | Numero de puerto del servidor proxy (tambien se puede especificar settings.https.proxy_port) |
settings.http.proxy_username | Nombre de usuario para autenticacion del proxy (tambien se puede especificar settings.https.proxy_username) |
settings.http.proxy_password | Contrasena para autenticacion del proxy (tambien se puede especificar settings.https.proxy_password) |
Configuracion de scripts
Mapeo basico:
Acceso a campos anidados:
Campos disponibles
source.<field_name>- Campo_sourcedel documento de Elasticsearchid- ID del documentoindex- Nombre del indicescore- Puntuacion de busquedaversion- Version del documentoseqNo- Numero de secuenciaprimaryTerm- Termino primarioclusterAlias- Alias del cluster (para busqueda entre clusters)hit- Objeto SearchHit (uso avanzado)
Configuracion de consultas
Obtener todos los documentos
Por defecto se obtienen todos los documentos. Si no se especifica el parametro query, se usa match_all.
Filtrado con condiciones especificas
Especificacion de rango:
Multiples condiciones:
Nota
El parametro query solo acepta el cuerpo de la query. El wrapper externo {"query":...} no es necesario. Las opciones a nivel de busqueda como ordenamiento no pueden especificarse en este parametro.
Obtener solo campos especificos
Limitar campos a obtener con el parametro fields
Para obtener todos los campos, no especifique fields o dejelo vacio.
Ejemplos de uso
Crawl basico de indice
Parametros:
Script:
Crawl desde cluster con autenticacion
Parametros:
Script:
Crawl desde multiples indices
Parametros:
Script:
Crawl de cluster OpenSearch
Parametros:
Script:
Crawl con campos limitados
Parametros:
Script:
Balanceo de carga con multiples hosts
Al especificar multiples hosts separados por comas en settings.http.hosts, las solicitudes se distribuyen entre cada host.
Parametros:
Script:
Solucion de problemas
Error de conexion
Sintoma: Connection refused o No route to host
Verificaciones:
Verificar que la URL del host sea correcta (protocolo, nombre de host, puerto)
Confirmar que Elasticsearch/OpenSearch este ejecutandose
Verificar la configuracion del firewall
En caso de HTTPS, verificar que el certificado sea valido
Error de autenticacion
Sintoma: 401 Unauthorized o 403 Forbidden
Verificaciones:
Verificar que el nombre de usuario y contrasena sean correctos
Confirmar que el usuario tenga los permisos apropiados:
Permisos de lectura en el indice
Permisos para usar la API de scroll
Si Elasticsearch Security (X-Pack) esta habilitado, verificar la configuracion correcta
Indice no encontrado
Sintoma: index_not_found_exception
Verificaciones:
Verificar que el nombre del indice sea correcto (incluyendo mayusculas/minusculas)
Confirmar que el indice existe:
Verificar que el patron de comodin sea correcto (ej:
logs-*)
Error de consulta
Sintoma: parsing_exception o search_phase_execution_exception
Verificaciones:
Verificar que el JSON de la consulta sea correcto
Confirmar que la consulta sea compatible con la version de Elasticsearch/OpenSearch
Verificar que los nombres de campo sean correctos
Probar ejecutando la consulta directamente en Elasticsearch/OpenSearch:
Timeout de scroll
Sintoma: No search context found o Scroll timeout
Solucion:
Aumentar el
scroll:Reducir el
size:Verificar los recursos del cluster
Crawl de grandes volumenes de datos
Sintoma: El crawl es lento o tiene timeout
Solucion:
Ajustar
size(demasiado grande puede hacerlo lento):Limitar los campos a obtener con
fieldsFiltrar solo los documentos necesarios con
queryDividir en multiples data stores (por indice, por rango de tiempo, etc.)
Memoria insuficiente
Sintoma: OutOfMemoryError
Solucion:
Reducir
sizeLimitar los campos a obtener con
fieldsAumentar el tamano del heap de Fess
Excluir campos grandes (datos binarios, etc.)
Conexion SSL/TLS
En caso de certificado autofirmado
Advertencia
Use certificados firmados adecuadamente en entornos de produccion.
Metodo 1: Especificar el certificado CA con el parametro settings.http.ssl.certificate_authorities (recomendado)
Especifique la ruta al archivo de certificado CA de confianza (formato X.509). Este metodo no afecta al keystore global de Fess.
Metodo 2: Agregar el certificado al keystore de Java
Agregue el certificado al almacen de confianza de la JVM que inicia Fess.
Conexion a traves de proxy
Para conectarse a traves de un servidor proxy, especifique settings.http.proxy_host y settings.http.proxy_port.
Ejemplos de consultas avanzadas
Consulta con agregacion
Nota
El parametro query solo acepta el cuerpo de la query. Agregaciones (aggs), ordenamiento y otras opciones a nivel de busqueda no pueden especificarse. Solo se obtienen los documentos.
Campos de script
Nota
Los campos de script de Elasticsearch/OpenSearch no estan incluidos en _source, por lo que no se puede acceder a ellos mediante el prefijo source.*. Para usar campos de script, acceda a ellos mediante el objeto hit usando hit.getFields().
Informacion de referencia
Descripcion General de los Conectores de Almacen de Datos - Descripcion general de conectores de Data Store
Conector de Base de Datos - Conector de base de datos
Rastreo de Almacén de Datos - Guia de configuracion de Data Store