- Introducció
- Configurar ElasticSearch
- Configurar la integració d’Elasticsearch
- Sintaxi de cerca
- Eines de línia de comandes
- Solució de problemes
NOTA: Aquesta millora només està disponible a SuiteCRM a partir de la versió 7.11
Introducció:
Elasticsearch és un motor d’indexació creat específicament per oferir resultats de cerca gairebé en temps real, optimitzat per buscar cadenes de text. Està construït en Java i s’executa com un servidor/procés separat.
Elasticsearch es pot integrar amb SuiteCRM per millorar la qualitat i la rapidesa de les cerques. Per aconseguir-ho, els mòduls habilitats per a cerca s’indexen al servidor Elasticsearch. Quan SuiteCRM rep una consulta de cerca, aquesta es redirigeix al servidor Elasticsearch, que realitzarà una cerca optimitzada i retornarà els resultats al CRM.
Actualment, SuiteCRM només admet Elasticsearch 5.6.
La sincronització entre la base de dades i l’índex Elasticsearch es realitza de tres maneres principals:
Hooks lògics
Cada vegada que s’actualitza un registre, s’indexa automàticament de nou.
Tasques programades
Periòdicament s’executa un treball del planificador per assegurar que la base de dades i l’índex estiguin sincronitzats.
Indexació manual
Un administrador pot sol·licitar un índex complet o parcial a través del panell d’administració o mitjançant una tasca “Robo”.
Configurar ElasticSearch
NOTA: SuiteCRM requereix ElasticSearch 5.6
ElasticSearch requereix Java 8 per executar-se, i només és compatible amb Oracle Java i OpenJDK.
Les maneres més ràpides de tenir un servidor Elasticsearch en funcionament són mitjançant l’ús de la imatge oficial de Docker o el paquet .deb per a sistemes basats en Debian (com Ubuntu).
En aquesta guia assumirem que s’està intentant instal·lar Elasticsearch en una màquina Ubuntu. Consulteu la documentació oficial per saber com instal·lar Elasticsearch de diferents maneres.
Aquesta guia li ensenyarà com tenir un servidor de desenvolupament en funcionament amb molt poca configuració, ja sigui mitjançant la instal·lació a través de Docker o del paquet .deb. Tingueu en compte que aquesta guia no és adequada per configurar un servidor Elasticsearch de producció.
Instal·lar via Docker (recomanat)
NOTA: Assegureu-vos que l’usuari actual pertany al grup docker o rebrà problemes de permisos.
Descarregar la imatge:
Començar amb docker-run: Inicia ElasticSearch. Això és ideal per a un servidor de prova/desenvolupament.
Començar amb docker-compose: Creeu un nou fitxer docker-compose.yml o afegiu la configuració d’elasticsearch al vostre docker-compose preexistent.
Instal·lar via .deb (no recomanat)
Descarregueu i instal·leu la clau pública:
Hauria d’instal·lar el paquet apt-transport-https a Debian abans de continuar:
Deseu la definició del repositori a /etc/apt/sources.list.d/elastic-5.x.list
Actualitzeu el repositori i instal·leu OpenJDK 11 i ElasticSearch:
Inicieu ElasticSearch amb:
o a Ubuntu:
Prova d’instal·lació
Comproveu si el servei s’està executant amb:
I hauria de rebre alguna cosa així:
Configurar la integració d’ElasticSearch
Vagi al Panell d’Administració, desplaci’s cap avall fins a la Configuració de Cerca (Search Settings) i obri la pàgina de Configuració Elasticsearch. Habiliti Elasticsearch des de la casella de verificació i completi els camps host, usuari i contrasenya. Simplement deixi l’usuari i la contrasenya en blanc si té habilitat l’accés anònim.
Puede utilitzar el botó Test connection per veure si la configuració actual està funcionant.
Un cop estigui satisfet amb la seva configuració, premi Guardar.
Després d’haver guardat, realitzi una indexació completa prement Programar indexació completa (Schedule full indexing).
Ara vagi a la Configuració de cerca i configureu Elasticsearch Engine com a motor de cerca. Pot personalitzar els mòduls que s’utilitzen per indexar a la secció de mòduls.
Sintaxi de cerca:
El motor SuiteCRM Elasticsearch utilitza el DSL Query String d’Elasticsearch. Això permet realitzar consultes de cerca molt avançades.
Exemples:
Cercar tots els registres que continguin ‘John’ i ‘Doe’ en qualsevol dels camps:
Cercar tots els registres que tinguin com a primer nom ‘John’:
Cercar tots els registres el nom dels quals comenci per ‘John’:
Cercar totes les comptes que tinguin ‘corp’ en el seu nom:
Unió
Per defecte, les paraules clau estan unides per clàusules OR, el que significa que cercar
John Doe serà el mateix que cercar John OR Doe. Naturalment, els resultats que continguin tant ‘John’ com ‘Doe’ apareixeran a la part superiorImpu
Els noms es poden incrementar, el que significa que si una de les paraules clau coincideix amb el nom, el registre probablement apareixerà a la part superior dels resultats.
Wildcards
Per defecte, totes les paraules clau han de coincidir. Per tant, cercar amb ‘John’ no coincidirà amb algú anomenat ‘Johnathan’. Per fer això necessites utilitzar un caràcter comodí. * es pot utilitzar indistintament per substituir zero o més caràcters. ? es pot utilitzar per substituir exactament un caràcter.
Cerqueu tant ‘John’ com ‘Johnathan’
Cerqueu tots els cognoms que comencin per ‘Mc’ o ‘Mac’
Els caràcters comodí també es poden utilitzar al començament de la paraula clau, però això farà que la cerca sigui una mica més lenta.
Cerqueu tots els registres que tinguin el cognom que acaba amb ‘Connor’:
Cercant per mòduls
Podeu restringir la cerca a un o més mòduls utilitzant la paraula clau _type i el nom del mòdul.
Cerqueu tots els usuaris:
Cerca “difusa”
L’ús de ~ farà que una paraula clau sigui difusa, cosa que significa que farà una cerca de proximitat, trobant totes les coincidències que tinguin un caràcter diferent (distància). La distància es pot personalitzar afegint un número després de la tilde.
Cerqueu ‘MacKenzie’, ‘McKenzie’, ‘Makenzie’, etc.
Metadades
Cada registre té els següents metacamps que es poden cercar:
- 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
Cercar tots els registres creats per ‘John Doe’:
Cercar tots els registres modificats des de l’1 d’agost:
Eines de línia de comandaments
La integració d’Elasticsearch de SuiteCRM es proporciona amb dues útils eines de línia de comandaments basades en Robo.
Aquests dos comandos permeten realitzar indexacions i cerques des de la línia de comandaments, facilitant la depuració i la integració amb eines externes.
elastic:index
El comando elastic:index permet executar una indexació des de la línia de comandaments i veure els registres pas a pas. Tant la indexació parcial com la completa són compatibles.
Ús
Exemples
Executant una indexació total:
Executant una indexació parcial:
elastic:search
El comando elastic:search li permet realitzar el mateix tipus de consultes que faria des de la barra de cerca directament des de la CLI. També permet retornar un JSON amb dades addicionals sobre el registre.
Ús
Pot utilitzar la sintaxi de consulta completa per a l’argument de consulta.
L’opció size especifica el nombre de resultats.
Quan l’opció showJson està habilitada, es retornarà un JSON per a cada resultat.
Exemples
Cercar tot utilitzant la paraula clau ‘rohan’:
Busque la primera cuenta llamada ‘Maxwell’ y muestre un JSON:
Resolució de problemes
Per facilitar el procés de resolució de problemes per a l’extensió Elasticsearch, s’utilitza un fitxer separat per oferir un registre molt detallat i dedicat: search_index.log. Això es deu principalment al fet que els procediments d’indexació s’executen en segon pla, on són difícils de depurar. Les crides de registre es redirigeixen al registre estàndard i es filtren amb el nivell de registre configurat.
A més de verificar els registres, pot intentar executar la cerca o la indexació des de la línia de comandaments utilitzant les eines de línia de comandaments. Donada la verbositat de la sortida de la consola, això segurament ajudarà a reduir el problema.
Finalment, habilitar el mode de desenvolupador a la configuració d’administració proporcionarà una pàgina d’excepció clara si l’error ocorre en algun moment durant el procés de cerca.