ElasticSearch 8: novità della nuova versione

Elastisearch è un database NoSQL utilizzato principalmente per la costruzione di motori di ricerca. Infatti, grazie all'integrazione di Apache Lucene permette di indicizzare in modo opportuno documenti testuali ed effettuare ricerche molto accurate. La nuova release introduce alcune novità e miglioramenti rispetto alla versione 7.

Share

Reading time: 4 minutes

Elastic ha rilasciato la versione 8 della sua piattaforma il 10 febbraio 2022. Nel corso degli ultimi mesi sono state rilasciate altre versioni che includono nuove funzionalità e correzioni di bugs. Questa release è la prima revisione significativa dall’aprile 2019, quando era stata rilasciata la versione 7. In questo articolo evidenzieremo le nuove funzionalità e modifiche introdotte nella nuova versione. Sul sito ufficiale potete trovare ovviamente l’elenco completo delle note di rilascio.

Retrocompatibilità

La nota più importante da evidenziare nella versione 8.0 è che Elastic ha aggiunto il supporto per gli headers delle chiamate API REST della versione 7. Infatti. la versione 8.0 ha introdotto diverse modifiche agli headers e alle risposte delle API REST, ma grazie al supporto delle strutture precedenti gli utenti possono aggiornare ElastiSearch all’ultima versione senza dover necessariamente modificare nell’immediato il codice.

Gli unici requisiti per effettuare l’upgrade alla versione 8 sono l’aggiornamento all’ultima versione 7 (7.17) e l’abilitazione della compatibilità REST utilizzando le intestazioni Accept e Content-Type. Dopo aver esaminato e risolto tutti i problemi critici elencati nell’Assistente aggiornamento, è possibile eseguire l’aggiornamento a Elasticsearch 8.

Attenzione però che le impostazioni di compatibilità non sono destinate a diventare un elemento permanente della piattaforma. Infatti, queste sono solo state introdotte al fine di rendere più agevole il processo di aggiornamento alla versione 8. Inoltre, una volta effettuato l’upgrade alla versione non è garantito un downgrade senza errori alle versioni precedenti.

Nuove funzionalità

In questa sezione andremo ad analizzare le principali funzionalità introdotte nella versione 8.

Vettori di ricerca densi kNN

I motori di raccomandazione possono essere implementati utilizzando vettori di ricerca kNN. La versione 7.x di Elasticsearch includeva la ricerca kNN utilizzando il campo script_score. Questo metodo garantiva risultati accurati, ma con un costo elevato in termini di velocità e scalabilità.

In Elasticsearch 8.x è stato aggiunto il campo dense_vector. Questo nuovo campo consente agli utenti di eseguire ricerche kNN approssimate su insiemi di dati più grandi in modo più rapido rispetto a script_score. Tuttavia queste ricerche restituiscono risultati meno accurati.

Pertanto, l’utente può decidere quale tecnica utilizzare in base al contesto applicativo.

Caricamento di modelli NLP PyTorch

PyTorch è un framework di machine learning basato sulla libreria Torch ed utilizzato per la creazione di modelli per applicazioni come la computer vision e l’elaborazione del linguaggio naturale (NLP). Elasticsearch 8.x consente agli utenti di caricare modelli di apprendimento automatico addestrati in PyTorch e di utilizzarli per l’elaborazione del linguaggio naturale. Dopo aver distribuito un modello scritto in TorchScript su un cluster, gli utenti possono fare previsioni sui dati in arrivo ed eseguire operazioni in base ai risultati. Lo stack di ElasticSearch supporta ad esempio la classificazione del testo, l’embedding e il named entity recognition.

Miglioramenti

Di seguito analizziamo i miglioramenti alle funzionalità introdotte nella nuova versione di ElasticSearch.

Log JSON conformi a ECS

Elasticsearch utilizza log4j2 di Apache per i log JSON. Nella versione 8.0, la configurazione è stata aggiornata per utilizzare EcsLayout invece di ESJsonLayout. Le versioni precedenti non presenteranno interruzioni nel logging perché è stata mantenuta l’infrastruttura precedente. Tuttavia la modifica dell’impostazione influisce su alcuni dei log di ES JSON:

  • I messaggi di stacktrace non saranno multilinea
  • I markers sono inseriti nel campo tags invece che in messages
  • I packages non sono abbreviati
  • %node_id e %cluster_id sono ora convertitori separati
  • Alcuni cambiamenti nei nomi dei campi, come level che diventa log.level e component che si trasforma in log.logger

Templates per i dati ECS di Metricbeat per supportare i formati di log precedenti

Quando Elasticsearch cambierà Metricbeat per scrivere i log in formato conforme a ECS, smetterà di supportare il formato legacy. Per supportare i formati legacy di Elasticsearch 7 e precedenti, sono state aggiunte nuove mappature con i nuovi campi ECS per l’indicizzazione dei dati. Queste mappature includono campi alias per il formato legacy, in modo da poter puntare ai corrispondenti campi ECS. Sono state create quattro nuove mappature per i log Metricbeat, Elasticsearch, Kibana e Logstash.

Aggiornamento alla versione 9 di Lucene

Elasticsearch è costruito sulla base della libreria Lucene. Elasticsearch fornisce una comoda API REST per facilitare l’interazione degli utenti con le funzioni di ricerca di Lucene. Con la versione 8.0 di Elasticsearch, è stato effettuato l’aggiornamento alla versione 9 di Lucene.

Quest’ultima versione di Lucene include nuove funzionalità linguistiche per il giapponese, lo svedese, il serbo e altre lingue. Inoltre, è stato aggiunto il supporto per vettori numerici ad alta dimensionalità nelle ricerche kNN e altre ottimizzazioni. Tra queste, una più rapida sfaccettatura delle tassonomie, una più rapida indicizzazione dei punti multidimensionali e un più rapido ordinamento dei campi indicizzati come punti.

Discontinuità

Con la nuova versione alcune funzionalità presenti nelle release precedenti non sono più disponibili e supportate. Scopriamo quali sono.

Mapping di Elasticsearch 6

La nuova versione di Elasticsearch si avvia solo se tutti gli indici creati sul cluster sono stati creati almeno nella versione 7.0. Pertanto, se si ha di un indice creato con una versione non supportata, è possibile utilizzare il comando reindex per aggiornare la struttura dell’indice.

I plugin per l’archiviazione esterna sono inclusi in Elasticsearch

I repository degli snapshots sono utilizzati per memorizzare i backup del cluster Elasticsearch e proteggere i dati. Se il cluster Elasticsearch è danneggiato, gli snapshots possono essere utilizzati per recuperare i dati.

Nelle versioni precedenti di Elasticsearch, era necessario installare dei plugin dedicati a ciascun repository tra cui: Amazon S3, Google Cloud Storage e Microsoft Azure Blob Storage. Con la nuova versione gli utenti non devono più installare questi plugin in quanto essi sono già inclusi nella libreria di Elasticsearch per impostazione predefinita.

Endpoint API REST

Diversi endpoint REST sono stati modificati o rimossi come parte dell’aggiornamento alla versione 8.0. Molte di queste modifiche erano già deprecate nella versione 7. Pertanto, le risposte su questi endpoint riportano un errore e non più un warning.

Le modifiche includono:

  • Rimozione di xpack dai percorsi degli endpoint
  • Rimozione dei tipi di mappatura dai percorsi degli endpoint
  • Sostituzione di nGram e edgeNGram rispettivamente con ngram e edge_ngram nelle richieste di filtro token.
  • Sostituzione della funzione jolly come like o delle parole chiave regex

More To Explore

Intelligenza artificiale

AI: le migliori tecniche di prompt per sfruttare i LLM

Le tecniche di prompt sono alla base dell’uso dei LLM. Esistono diversi studi e linee guide per ottenere i migliori risultati da questi modelli. Analizziamo alcuni di essi per estrarre i principi fondamentali che ci permetteranno di ottenere le risposte desiderate in base al nostro compito.

Intelligenza artificiale

AI: creare un chatbot con i propri dati

ChatGPT ci permette di avere un assistente virtuale a nostra completa disposizione. Ha però una grande limitazione: non conosce i nostri dati privati. Come possiamo costruirci un nostro assistente virtuale, o meglio un chabot, che usi i nostri dati e che non ci richieda investimenti di denaro? Scopriamo come costruirne uno usando LLM open, ambienti computazionali gratuiti come Colab e librerie Python per gestire file PDF e creare interfacce web semplici ed intuitive.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Design with MongoDB

Design with MongoDB!!!

Buy the new book that will help you to use MongoDB correctly for your applications. Available now on Amazon!