# 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 -&gt; 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 rea**l stuff \[...\]"
- Alcune ricerche potrebbero restutire risultati diversi a causa di translitterazione di alcuni caratteri, come ß -&gt; 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 -&gt;ElasticSearch:

[![image.png](https://usermanual.vtenext.com/uploads/images/gallery/2026-05/scaled-1680-/image.png)](https://usermanual.vtenext.com/uploads/images/gallery/2026-05/image.png)

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

[![image.png](https://usermanual.vtenext.com/uploads/images/gallery/2026-05/scaled-1680-/alyimage.png)](https://usermanual.vtenext.com/uploads/images/gallery/2026-05/alyimage.png)

I primi campi servono per configurare la connesione al server ElasticSearch, tramite url e autenticazione. Dopodichè si hanno:

<table id="bkmrk-campo-utilizzo-integ" style="border-collapse:collapse;width:100%;height:565.359px;"><colgroup><col style="width:25.6257%;"></col><col style="width:74.3743%;"></col></colgroup><thead><tr style="height:29.7969px;"><td style="height:29.7969px;">**Campo**</td><td style="height:29.7969px;">**Utilizzo**</td></tr></thead><tbody><tr style="height:46.5938px;"><td style="height:46.5938px;">Integrazione attiva</td><td style="height:46.5938px;">Si può attivare o disattivare globalmente il modulo ElasticSearch. Se non attivo, nessuna richiesta verrà fatta al server ElasticSearch</td></tr><tr style="height:46.5938px;"><td style="height:46.5938px;">Moduli abilitati</td><td style="height:46.5938px;">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)</td></tr><tr style="height:412.578px;"><td style="height:412.578px;">Aggiungi modulo</td><td style="height:412.578px;">Permette di aggiungere un modulo all'integrazione. Una volta cliccato appare un popup per scegliere un modulo:

[![image.png](https://usermanual.vtenext.com/uploads/images/gallery/2026-05/scaled-1680-/i3cimage.png)](https://usermanual.vtenext.com/uploads/images/gallery/2026-05/i3cimage.png)

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).

</td></tr><tr style="height:29.7969px;"><td style="height:29.7969px;">Versione ElasticSearch</td><td style="height:29.7969px;">Se la connessione verso il server ElasticSearch ha esito positivo, mostra la versione

</td></tr></tbody></table>

#### Manutenzione

Da questa sezione si possono eseguire operazioni di manutenzione degli indici, per i moduli indicizzati:

[![image.png](https://usermanual.vtenext.com/uploads/images/gallery/2026-05/scaled-1680-/tYvimage.png)](https://usermanual.vtenext.com/uploads/images/gallery/2026-05/tYvimage.png)

<table id="bkmrk-azione-significato-e" style="border-collapse:collapse;width:100%;"><colgroup><col style="width:28.2533%;"></col><col style="width:71.7467%;"></col></colgroup><thead><tr><td>**Azione**</td><td>**Significato**</td></tr></thead><tbody><tr><td>Elimina</td><td>Disattiva l'integrazione di questo modulo con ElasticSearch e rimuove l'indice.</td></tr><tr><td>Reindicizza</td><td>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

</td></tr><tr><td>Reindicizza con filtro</td><td>Come il precedente, ma permette di sincronizzare solo un filtro specifico:

[![image.png](https://usermanual.vtenext.com/uploads/images/gallery/2026-05/scaled-1680-/BVqimage.png)](https://usermanual.vtenext.com/uploads/images/gallery/2026-05/BVqimage.png)

</td></tr></tbody></table>