Manual SuiteCRM – Administración – Búsqueda con ElasticSearch

Contenido del manual:

  • Introducción
  • Configurar ElasticSearch
  • Configurar la integración de Elasticsearch
  • Sintaxis de búsqueda
  • Herramientas de línea de comando
  • Solución de problemas
*NOTA: Esta mejora solo está disponible en SuiteCRM a partir de la versión 7.11
 

Introducción:

 
Elasticsearch es un motor de indexación creado específicamente para tener resultados de búsqueda casi en tiempo real, optimizado para buscar cadenas de texto. Está construido en Java y se ejecuta como un servidor / proceso separado.
 
Elasticsearch se puede integrar con SuiteCRM para mejorar la calidad y el tiempo de búsqueda. Para lograr esto, los módulos habilitados para búsqueda se indexan en el servidor Elasticsearch. Cuando SuiteCRM recibe una consulta de búsqueda, ésta se redirige al servidor Elasticsearch, que realizará una búsqueda optimizada y devolverá los resultados al CRM.
 
SuiteCRM actualmente solo admite Elasticsearch 5.6.
 
La sincronización entre la base de datos y el índice Elasticsearch ocurre de tres maneras principales:
 
Ganchos lógicos
Cada vez que se actualiza un registro, se vuelve a indexar automáticamente.
 
Tarea programada
Se ejecutará periódicamente un trabajo de planificador para asegurarse de que la base de datos y el índice estén sincronizados.
 
Indexación manual
Un administrador puede solicitar un índice completo o parcial a través del panel de administración o desde una tarea «Robo».
 
 

Configurar ElasticSearch 

*NOTA: SuiteCRM requiere ElasticSearch 5.6
 
ElasticSearch requiere Java8 para ejecutarse, y solo soporta OracleJava y OpenJDK.
 
Las formas más rápidas de tener un servidor Elasticsearch en funcionamiento es mediante el uso de la imagen oficial de Docker o el paquete .deb para sistemas basados en Debian (como Ubuntu).
 
En esta guía asumiremos que está intentando instalar Elasticsearch en una máquina Ubuntu. Consulte la documentación oficial para saber cómo instalar Elasticsearch de diferentes maneras.
 
Esta guía le enseñará cómo tener un servidor de desarrollo en funcionamiento con muy poca configuración, ya sea mediante la instalación a través de Docker o el paquete .deb. Tenga en cuenta que esta guía no es adecuada para configurar un servidor Elasticsearch de producción.
 
Instalar via Docker (recomendado)
 
*NOTA: Asegurarse que el usuario actual pertenece al grupo docker o recibirá problemas de permisos.
 

 Descargar la imagen:

 

Empezar con docker-run : Inicia ElasticSearch. Esto es ideal para un servidor de test/desarrollo

Empiea con docker-compose: Crea un nuevo archivo docker-compose.yml o añade la configuración elasticsearch a su docker-compose preexistente.

Instalar via .deb (no recomendado)

Descargue e instale la llave pública:

Debería instalar el paquete apt-transport-https en Debian antes de continuar:

Guarda la definición del repositorio en /etc/apt/sources.list.d/elastic-5.x.list

Actualice el repositorio e instale OpenJDK 11 y ElasticSearch:

Inicie Elastic Search con:

o en Ubuntu:

Test de instalación

Compruebe si el servicio está ejecutándose con:

Y debería recibir algo así:

Configurar la integración de ElasticSearch

Vaya al Panel de Administración, desplácese hacia abajo hasta la Configuración de Búsqueda (Search Settings) y abra la página de Configuración Elasticsearch. Habilite Elasticsearch desde la casilla de verificación y complete los campos host, usuario y contraseña. Simplemente deje el usuario y la contraseña en blanco si tiene habilitado el acceso anónimo.

Puede usar la Test connection para ver si la configuración actual está funcionando.

Una vez que esté satisfecho con su configuración, presione Guardar.

Después de haber guardado, realice una indexación completa presionando Programar indexación completa (Schedule full indexing).

Ahora vaya a la Configuración de búsqueda y configure Elasticsearch Engine como motor de búsqueda. Puede personalizar los módulos que se utilizan para indexar en la sección de módulos.

 

Sintaxis de búsqueda:

El motor SuiteCRM Elasticsearch utiliza el DSL Query String de Elasticsearch. Esto permite realizar consultas de búsqueda muy avanzadas.

Ejemplos

Buscar por todos los registros que contengan ‘John’ y ‘Doe’ en cualquiera de los campos:

Buscar pot todos los registros que tengan como primer nombre ‘John’:

Buscar por todos los registros cuyo nombre empiece por ‘John’:

Buscar todas la cuentas que tengan ‘corp’ en su nombre:

Unión

Por defecto, las palabras clave están unidas por cláusulas OR, lo que significa que buscar John Doe será lo mismo que buscar John OR Doe. Por supuesto, los resultados que contienen ‘John’ y ‘Doe’ aparecerán en la parte superior.

Impulso

Los nombres se incrementan, lo que significa que si una de las palabras clave coincide con el nombre, el registro probablemente aparecerá en la parte superior.

Wildcards

Por defecto, todas las palabras clave deben coincidir. Por lo tanto, buscar con ‘John’ no coincidirá con alguien llamado ‘Johnathan’. Para hacer eso necesitas usar un carácter comodín. * se puede usar indistintamente para reemplazar cero o más caracteres. ? se puede usar para reemplazar exactamente un carácter.

Busque tanto ‘John’ como ‘Johnathan’:

Buscar todos los apellidos que empiecen por ‘Mc’ o ‘Mac’

Los comodines también se pueden usar al comienzo de la palabra clave, pero hará que la búsqueda sea un poco más lenta.

Busque todos los registros que tengan el apellido que termina con ‘Connor’:

 

Buscando por módulos

Puede restringir la búsqueda a uno o más módulos utilizando la palabra clave _type y el nombre del módulo.

Buscar todos los usuarios:


 

Búsqueda «borrosa»

El uso de ~ hará que una palabra clave sea difusa, lo que significa que hará una búsqueda de proximidad, encontrando todas las coincidencias que tienen un carácter diferente (distancia). La distancia se puede personalizar agregando un número después de la tilde.

Busque ‘MacKenzie’, ‘McKenzie’, ‘Makenzie’, etc.

Metadatos

Cada registro tiene los siguientes metacampos que se pueden buscar:

  • meta.created.date
  • meta.created.user_id
  • meta.created.user_name
  • meta.modified.date
  • meta.modified.user_id
  • meta.modified.user_name
  • meta.assigned.user_id
  • meta.assigned.user_name

Buscar todos los registros creados por ‘John Doe’:

Buscar todos los registros modificados desde el 1 de agosto:

 

 

Herramientas de la línea de comandos

La integración Elasticsearch de SuiteCRM se entrega con dos útiles herramientas de línea de comandos con tecnología de Robo.

Estos dos comandos permiten realizar indexaciones y búsquedas desde la línea de comandos, lo que facilita la depuración y la integración con herramientas externas.

elastic:index

El comando elastic: index permite ejecutar una indexación desde la línea de comandos y ver los registros paso a paso. Tanto la indexación parcial como la completa son compatibles.

Uso


Ejemplos

Ejecutando una indexación total:


Ejecutando una indexación parcial:




elastic:search

El comando elastic: search le permite realizar el mismo tipo de consultas que haría desde la barra de búsqueda directamente desde la CLI. También permite devolver un JSON con datos adicionales sobre el registro.

Uso


Puede usar la sintaxis de consulta completa para el argumento de consulta.

La opción de tamaño especifica el número de resultados.

Cuando la opción showJson está habilitada, se devolverá un JSON para cada resultado.

Ejemplos

Busque todo utilizando la palabra clave ‘rohan’:



Busque la primera cuenta llamada ‘Maxwell’ y muestre un JSON:



Solución de problemas

Para facilitar el proceso de solución de problemas para la extensión Elasticsearch, se utiliza un archivo separado para ofrecer un registro muy detallado y dedicado: search_index.log. Esto se debe principalmente a que los procedimientos de indexación se ejecutan en segundo plano, donde son difíciles de depurar. Las llamadas de registro se redirigen al registro estándar, se filtran con el nivel de registro configurado.

Además de verificar los registros, puede intentar ejecutar la búsqueda o la indexación desde la línea de comandos utilizando las herramientas de la línea de comandos. Dada la verbosidad de la salida de la consola, esto seguramente debería ayudar a reducir el problema.

Finalmente, habilitar el modo de desarrollador en la configuración de administración proporcionará una página de excepción clara si el error ocurre en algún momento durante el proceso de búsqueda.



Deja un comentario