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
Introducción:
Configurar ElasticSearch
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.