Modulo ElasticSearch Integrazione di Vtenext con ElasticSearch per velocizzare le liste Requisiti e installazione Introduzione Il modulo ElasticSearch per vtenext consente di velocizzare notevolmente il tempo di caricamento delle liste di record, per moduli con molti dati. Anche con moduli contenenti milioni di record e filtri con varie condizioni e i tempi di caricamento sono di norma inferiori al secondo.   Funzionamento L'idea sottostante questo modulo è di utilizzare ElasticSearch per eseguire ricerche e ordinamenti in una grande quantità di dati. Una volta installato il modulo, tutti i record dei moduli desiderati vengono indicizzati in ElasticSearch e mantenuti sincronizzati ad ogni modifica. Le liste di record sono modificate per eseguire la ricerca secondo i parametri di visibilità e del filtro usato direttamente in ElasticSearch, che generalmente restituisce i risultati in una frazione di secondo.   Requisiti di sistema ElasticSearch 7 o 8 installato su macchina separata e configurato con autenticazione (password o key). Le caratteristiche della macchina ElasticSearch dipendono dalla mole di dati e utenti di vtenext, ma il minimo necessario per poter almeno testare il modulo è stimato in 4 CPU e 4GB di RAM. Vtenext almeno 25.02 Almeno un modulo con 10 mila records, con meno record i miglioramenti di performance sono trascurabili   Installazione Installare il pacchetto fornito da Impostazioni -> Gestore Moduli   Limitazioni Il modulo ElasticSearch non copre tutte le casistiche di filtri e ricerche di Vtenext standard, in particolare, valgono le seguenti limitazioni: Non si applica a filtri basati su report Non è attivabile su alcuni moduli quali: Calendario, Processi, Grafici, Note. In caso di modifiche alla visibilità dei record tramite SDK::setAdvancedQuery, va modificato il codice per supportare ElasticSearch, e comunque non è garantito sia sempre possibile attivarlo Alcune ricerche potrebbero restituire risultati diversi causati dalla tokenizzazione di ElasticSearch, ad esempio, cercando per "andrea" si possono trovare stringhe come "[...] and real stuff [...]" Alcune ricerche potrebbero restutire risultati diversi a causa di translitterazione di alcuni caratteri, come ß -> ss. Valori con spazi all'inizio o alla fine potrebbero non essere trovati tramite ricerche esatta Configurazione Dalla versione 2.5 del modulo ElasticSearch è presente una interfaccia di configurazione, accessibile da Impostazioni ->ElasticSearch: Sono presenti 2 sezioni, Configurazione, per impostare i parametri di connessione e attivare l'integrazione per singoli moduli, e Manutenzione, per eseguire operazioni di pulizia e re-indicizzazione. Configurazione I primi campi servono per configurare la connesione al server ElasticSearch, tramite url e autenticazione. Dopodichè si hanno: Campo Utilizzo Integrazione attiva Si può attivare o disattivare globalmente il modulo ElasticSearch. Se non attivo, nessuna richiesta verrà fatta al server ElasticSearch Moduli abilitati Qui si vedono i moduli che sono abilitati all'utilizzo di ElasticSearch con lo stato dell'indicizzazione, il numero di record indicizzati e il tipo di accesso (si veda la descrizione a lato per i vari valori) Aggiungi modulo Permette di aggiungere un modulo all'integrazione. Una volta cliccato appare un popup per scegliere un modulo: Una votla scelto, il modulo non è subito utilizzabile, è necessario attendere che tutti i suoi record vengano indicizzati, operazione che avviene in background, la cui durata dipende dal numero di record (può durare dai 10 minuti anche a svariate ore). Versione ElasticSearch Se la connessione verso il server ElasticSearch ha esito positivo, mostra la versione Manutenzione Da questa sezione si possono eseguire operazioni di manutenzione degli indici, per i moduli indicizzati: Azione Significato Elimina Disattiva l'integrazione di questo modulo con ElasticSearch e rimuove l'indice. Reindicizza Rigenera l'indice con tutti i record del modulo su ElasticSearch. Durante la reindicizzazione è possibile utilizzare normalmente il modulo in quanto viene creato un indice parallelo e solo al termine sostituito con quello effettivo. Va eseguita in caso di disallineamenti dell'indice con il database mysql, tra le cause ci possono essere: modifiche dei record manuali da database modifiche dei record tramite query dirette come UPDATE o INSERT (si deve invece usare la funzione  ->save() per garantire la corretta sincronizzazione) interruzioni durante procedure di salvataggio che hanno modificato il record in vte, ma non hanno scatenato l'aggiornamento su ElasticSearch Reindicizza con filtro Come il precedente, ma permette di sincronizzare solo un filtro specifico: