Descripción General
En las búsquedas normales de Fess, solo se muestra un número limitado de resultados de búsqueda mediante la función de paginación. Si desea obtener todos los resultados de búsqueda de una sola vez, utilice la función de Búsqueda Scroll (Scroll Search).
Esta función es útil cuando necesita procesar todos los resultados de búsqueda, como en exportaciones masivas de datos, copias de seguridad y análisis de grandes volúmenes de datos.
Casos de Uso
La búsqueda scroll es adecuada para los siguientes propósitos:
Exportación completa de resultados de búsqueda
Obtención de grandes volúmenes de datos para análisis
Obtención de datos en procesos por lotes
Sincronización de datos con sistemas externos
Recopilación de datos para generación de informes
Advertencia
La búsqueda scroll devuelve grandes volúmenes de datos, por lo que consume más recursos del servidor en comparación con las búsquedas normales. Habilítela solo cuando sea necesario.
Método de Configuración
Habilitación de la Búsqueda Scroll
Por defecto, la búsqueda scroll está deshabilitada por motivos de seguridad y rendimiento. Para habilitarla, modifique la siguiente configuración en app/WEB-INF/classes/fess_config.properties (en paquetes RPM/DEB, /etc/fess/fess_config.properties).
Nota
Después de cambiar la configuración, es necesario reiniciar Fess.
Duración del Contexto de Scroll
La duración del contexto de scroll de la búsqueda scroll está fijada internamente en Fess en 1m (1 minuto). Este valor no se puede cambiar desde fess_config.properties.
Nota
Existe una configuración llamada index.scroll.search.timeout, pero esta se utiliza para operaciones internas que implican actualización o eliminación del índice (update by query / delete by query) y no afecta al tiempo de espera de esta función (scroll de búsqueda).
Configuración de Campos de Respuesta
Puede personalizar los campos que se incluyen en la respuesta de los resultados de búsqueda. Por defecto, se devuelven muchos campos, pero puede especificar campos adicionales.
Al especificar múltiples campos, enumérelos separados por comas.
Nota
El campo content no está incluido en la respuesta predeterminada. Si necesita el texto completo, agréguelo mediante la configuración indicada anteriormente.
Método de Uso
Uso Básico
Para acceder a la búsqueda scroll, utilice la siguiente URL.
Los resultados de búsqueda se devuelven en formato NDJSON (Newline Delimited JSON). Cada línea representa un documento en formato JSON.
Ejemplo:
Parámetros de Solicitud
En la búsqueda scroll, puede utilizar los siguientes parámetros.
Nota
La búsqueda scroll solo admite el método GET. Si se accede con un método distinto a GET, se devuelve 405 Method Not Allowed.
| Nombre del Parámetro | Descripción |
|---|---|
q | Consulta de búsqueda (obligatorio) |
num | Número de registros a obtener en cada scroll (predeterminado: 10, máximo: 100) |
fields.label | Filtrado por etiqueta |
Nota
El valor máximo de num se controla mediante paging.search.page.max.size (predeterminado: 100). Si se especifica un valor superior al máximo, se recortará automáticamente al valor máximo. El valor predeterminado se toma de paging.search.page.size (predeterminado: 10). Si se especifica un valor de 0 o inferior en num, se devuelve un error (INVALID_REQUEST).
Especificación de Consulta de Búsqueda
Puede especificar consultas de búsqueda de la misma manera que en las búsquedas normales.
Ejemplo: Búsqueda por palabra clave
Ejemplo: Búsqueda con campo especificado
Ejemplo: Obtención completa (sin condiciones de búsqueda)
Especificación del Número de Registros a Obtener
Puede cambiar el número de registros a obtener en cada scroll.
Nota
Si el parámetro num es demasiado grande, aumentará el uso de memoria. El valor máximo predeterminado es 100. Si necesita un valor mayor, modifique la configuración paging.search.page.max.size.
Filtrado por Etiqueta
Puede obtener solo los documentos que pertenecen a una etiqueta específica.
Acerca del Control de Acceso
Nota
En la búsqueda scroll, al igual que en las búsquedas normales, se aplica el control de acceso basado en roles (RBAC). Solo se devuelven los documentos a los que se puede acceder según la información de roles de la solicitud, por lo que los documentos sin permiso de visualización no se incluyen en los resultados.
Advertencia
El endpoint de la búsqueda scroll no requiere autenticación de forma predeterminada (cualquiera puede acceder a él). Sin embargo, los documentos devueltos son filtrados por el control de acceso basado en roles descrito anteriormente. Si desea restringir el acceso al propio endpoint, configure restricciones de dirección IP o autenticación mediante un proxy inverso u otro mecanismo.
Formato de Respuesta
Formato NDJSON
La respuesta de la búsqueda scroll se devuelve en formato NDJSON (Newline Delimited JSON). El Content-Type es application/x-ndjson; charset=UTF-8. Cada línea representa un documento envuelto en el formato {"data": {...}}.
Ejemplo:
Nota
Cada documento se almacena bajo la clave data. En el lado del cliente, tras parsear cada línea, acceda al valor de la clave data.
Comportamiento ante Errores
Si se produce un error en el servidor después de que ha comenzado el envío del stream, se emite en la última línea de la respuesta la siguiente línea terminadora de error:
Nota
En el lado del cliente, puede determinar si el stream se completó correctamente o si se produjo un error intermedio en el servidor verificando si la última línea contiene la clave error. Tenga en cuenta que si la escritura de la propia línea terminadora de error falla, no se emite dicha línea y el stream finaliza de forma incompleta, por lo que trate también las desconexiones inesperadas como errores.
Campos de Respuesta
Campos incluidos por defecto:
score: Puntuación de búsqueda_id: ID del documento (ID de documento de OpenSearch)doc_id: ID del documento (interno de Fess)boost: Valor de boostcontent_length: Longitud del contenidohost: Nombre del hostsite: Sitiolast_modified: Fecha y hora de la última modificacióntimestamp: Marca de tiempomimetype: Tipo MIMEfiletype: Tipo de archivofilename: Nombre de archivocreated: Fecha y hora de creacióntitle: Títulodigest: Extracto del contenidourl: URL del documentothumbnail: Miniaturaclick_count: Número de clicsfavorite_count: Número de favoritoshas_cache: Disponibilidad de cachécontent_title: Título para visualizacióncontent_description: Extracto del contenido para visualizaciónurl_link: URL de enlace para visualizaciónsite_path: Ruta del sitio
Nota
Los campos efectivamente emitidos se limitan a los campos permitidos como respuesta de la API. Los campos sin valor no se emiten.
Nota
content (texto completo) no está incluido por defecto. Puede agregarse mediante query.additional.scroll.response.fields.
Ejemplos de Procesamiento de Datos
Ejemplo de Procesamiento en Python
Guardar en Archivo
Ejemplo de cómo guardar los resultados de búsqueda en un archivo:
Conversión a CSV
Ejemplo de conversión a CSV utilizando el comando jq:
Análisis de Datos
Ejemplo de análisis de datos obtenidos:
Rendimiento y Mejores Prácticas
Uso Eficiente
Configuración Apropiada del Parámetro num
Si es demasiado pequeño, aumenta la sobrecarga de comunicación
Si es demasiado grande, aumenta el uso de memoria
Máximo predeterminado: 100
Optimización de Condiciones de Búsqueda
Especifique condiciones de búsqueda para obtener solo los documentos necesarios
Ejecute la obtención completa solo cuando sea realmente necesario
Uso en Horarios de Baja Demanda
Ejecute la obtención de grandes volúmenes de datos durante períodos de baja carga del sistema
Uso en Procesos por Lotes
Ejecute sincronizaciones de datos periódicas como trabajos por lotes
Optimización del Uso de Memoria
Al procesar grandes volúmenes de datos, utilice procesamiento en streaming para reducir el uso de memoria.
Consideraciones de Seguridad
Restricciones de Acceso
Dado que la búsqueda scroll devuelve grandes volúmenes de datos, configure restricciones de acceso apropiadas. El endpoint en sí no requiere autenticación de forma predeterminada, por lo que considere las siguientes medidas según sea necesario.
Restricción por Dirección IP
Permitir acceso solo desde direcciones IP específicas
Autenticación de API
Utilizar tokens de API o autenticación básica mediante un proxy inverso u otro mecanismo
Control de Acceso Basado en Roles
Los documentos devueltos son filtrados por el control de acceso basado en roles de Fess
Limitación de Tasa
Se recomienda configurar limitación de tasa en el proxy inverso para evitar accesos excesivos.
Solución de Problemas
La Búsqueda Scroll No Está Disponible
Verifique que
api.search.scrollesté configurado comotrue.Verifique que haya reiniciado Fess.
Revise los registros de errores.
Se Produce un Error de Tiempo de Espera
Reduzca el parámetro
numpara distribuir el procesamiento.Refine las condiciones de búsqueda para reducir la cantidad de datos obtenidos.
Error de Memoria Insuficiente
Reduzca el parámetro
num.Aumente el tamaño de memoria heap de Fess.
Verifique el tamaño de memoria heap de OpenSearch.
La Respuesta Está Vacía
Verifique que la consulta de búsqueda sea correcta.
Verifique que las etiquetas o condiciones de filtro especificadas sean correctas.
Los documentos sin permiso de visualización no se incluyen en los resultados debido al control de acceso basado en roles. Verifique la configuración de roles de la solicitud.
Información de Referencia
Funcionalidad de búsqueda - Detalles de la función de búsqueda
Configuración de Búsqueda Avanzada - Configuración relacionada con la búsqueda