Elasticsearch è un motore di ricerca e analytics gratuito e open-source basato su Apache Lucene. Elasticsearch è distribuito e supporta tutti i tipi di dati, inclusi numerici, testuali, strutturati, non strutturati e geospaziali. Elasticsearch viene fornito con semplici API REST e offre funzionalità per la scalabilità e la ricerca veloce.
Elasticsearch è una parte importante di Elastic Stack, che è un set di strumenti open-source tra cui l'ingestione dei dati, lo storage, l'arricchimento, la visualizzazione e l'analisi. Strumenti degni di nota nello stack sono Elasticsearch, Logstash e Kibana (ELK).
L'architettura Elasticsearch sfrutta la build di indicizzazione Lucene e la combina con un modello distribuito che separa l'architettura in piccoli componenti, chiamati shard, che possono essere distribuiti su più nodi.
In questo articolo imparerai:
Elasticsearch è una soluzione di ricerca e analytics scalabile che supporta la multi-tenancy e fornisce una ricerca quasi real-time. Puoi utilizzare Elasticsearch per abilitare le ricerche per tutti i tipi di dati e varie posizioni. Il motore acquisisce dati da più posizioni, li archivia e indicizza i dati in base a una mappatura manuale o automatizzata predefinita.
Poiché Elasticsearch funziona con un'architettura distribuita, gli utenti possono cercare e analizzare enormi volumi di dati quasi in real-time. Inoltre, Elasticsearch introduce la scalabilità nel processo di ricerca, consentendo di iniziare con una sola macchina e scalare fino a centinaia.
Puoi utilizzare Elasticsearch per eseguire un cluster di ricerca completo (noto anche come full-text), come ricerca di documenti, ricerca di prodotti e ricerca di email. Tuttavia, ciò richiede un livello elevato di competenze ed esperienza. Puoi anche utilizzare Elasticsearch per archiviare dati in attesa di slicing e dicing e dati che devono essere raggruppati in categorie, come metriche, tracce e log.
Elasticsearch è implementabile in vari ambienti cloud così come on-premises. Puoi ospitare autonomamente Elasticsearch o utilizzare un servizio cloud come AWS Elasticsearch.
Elasticsearch utilizza agenti di spedizione, chiamati beats, per trasferire dati raw da più origini in Elasticsearch. Dopo che i dati sono stati spediti in Elasticsearch, il motore esegue processi di ingestione dei dati, che analizzano, normalizzano, arricchiscono e preparano i dati per l'indicizzazione. Dopo che i dati sono stati indicizzati, gli utenti possono eseguire query complesse e utilizzare le aggregazioni per recuperare riepiloghi di dati complessi.
Per la visualizzazione e la gestione, Elastic Stack offre uno strumento chiamato Kibana, che consente agli utenti di creare visualizzazioni di dati in real-time, come grafici a torta, mappe, grafici a linee e istogrammi. Kibana consente anche di condividere dashboard, utilizzare Canvas per creare infografiche dinamiche personalizzate e utilizzare Elastic Maps per visualizzare dati geospaziali.
L'architettura di Elasticsearch è progettata per garantire scalabilità e flessibilità. I componenti principali sono cluster Elasticsearch, nodi, shard e analizzatori.
Un cluster Elasticsearch è composto da un gruppo di nodi che memorizzano dati. È possibile specificare il numero di nodi che iniziano a essere eseguiti con il cluster, così come l'indirizzo IP del server virtuale o fisico. È possibile specificare queste informazioni nel file config/elasticsearch.yml, che contiene tutte le impostazioni di configurazione.
I nodi in un cluster Elasticsearch sono connessi tra loro e ogni nodo contiene una piccola parte di dati del cluster. È possibile eseguire tutti i cluster necessari. Tuttavia, di solito è sufficiente un nodo. Il sistema crea automaticamente un cluster quando viene avviato un nuovo nodo. I nodi partecipano ai processi complessivi del cluster responsabili della ricerca e dell'indicizzazione.
In generale, il termine nodo si riferisce a un server che funziona come parte del cluster. In Elasticsearch, un nodo è un'istanza—non è una macchina. Questo significa che puoi eseguire più nodi su una singola macchina. Un'istanza Elasticsearch consiste di uno o più nodi basati su cluster. Per impostazione predefinita, quando viene avviata un'istanza Elasticsearch, viene avviato anche un nodo.
Ecco le tre opzioni principali per configurare un nodo Elasticsearch:
L'architettura Elasticsearch utilizza due porte principali per la comunicazione:
Non esiste alcun limite al numero di documenti che è possibile archiviare in ciascun indice. Tuttavia, se un indice supera i limiti di storage del server di hosting, Elasticsearch potrebbe bloccarsi. Per evitare questo problema, gli indici vengono suddivisi in piccoli pezzi chiamati shard.
Gli shard sono unità di indicizzazione piccole e scalabili che fungono da building blocks dell'architettura Elasticsearch. Gli shard consentono di distribuire le operazioni e migliorare le prestazioni complessive. Dopo aver creato un indice, è possibile creare tutti gli shard necessari. Ogni shard funziona come un indice Lucene indipendente, che è possibile ospitare ovunque nel cluster.
In Elasticsearch, le repliche sono copie di shard di indice. Le repliche vengono utilizzate come meccanismo di fail-safe per il backup e il ripristino. Le repliche non vengono mai posizionate sul nodo contenente gli shard originali (primari).
Per garantire la disponibilità, le repliche vengono archiviate in posizioni diverse. È possibile definire le repliche dopo la creazione dell'indice e creare tutte le repliche necessarie. Ciò significa che puoi archiviare più repliche rispetto alle shard primarie.
Gli analizzatori sono responsabili dell'analisi di frasi ed espressioni in termini costitutivi. Ciò si verifica durante il processo di indicizzazione. Ogni analizzatore è composto da un tokenizer e da diversi filtri token. Quando si incontra una certa espressione, il tokenizer può suddividere una stringa in termini predefiniti.
L'architettura Elasticsearch è progettata per supportare il recupero di documenti, che sono memorizzati come oggetti JSON. Elasticsearch supporta strutture nidificate, che aiutano a gestire dati e query complessi. Per tenere traccia delle informazioni, Elasticsearch utilizza chiavi precedute da un carattere di sottolineatura, che rappresentano i metadati.
NetApp Cloud Volumes ONTAP, la soluzione leader nella gestione dello storage enterprise, fornisce servizi di gestione dello storage sicuri e comprovati su AWS, Azure e Google Cloud. Cloud Volumes ONTAP supporta una capacità massima di 368TB e supporta vari casi d'uso come file services, database, DevOps o qualsiasi altro carico di lavoro enterprise, con un solido set di funzionalità tra cui high availability, data protection, storage efficiencies, integrazione con Kubernetes e altro ancora.
Cloud Volumes ONTAP supporta funzionalità avanzate per la gestione dello storage SAN nel cloud, per i sistemi database NoSQL e per le condivisioni NFS a cui è possibile accedere direttamente dai cluster big data analytics nel cloud.
Inoltre, Cloud Volumes ONTAP offre funzionalità di efficienza dello storage, tra cui thin provisioning, compressione dei dati e deduplica, riducendo l'ingombro dello storage e i costi fino al 70%.
Per ulteriori informazioni sull'ottimizzazione dell'implementazione di Elasticsearch con NetApp, scarica subito il nostro eBook gratuito Ottimizza performance e costi di Elasticsearch con Cloud Volumes ONTAP.