Elasticsearch - Concetti di base

Elasticsearch è un server di ricerca basato su Apache Lucene. È stato sviluppato da Shay Banon e pubblicato nel 2010. Ora è gestito da Elasticsearch BV. La sua ultima versione è 7.0.0.

Elasticsearch è un motore di ricerca e analisi full-text distribuito e open source in tempo reale. È accessibile dall'interfaccia del servizio Web RESTful e utilizza documenti JSON (JavaScript Object Notation) senza schema per memorizzare i dati. È basato sul linguaggio di programmazione Java e quindi Elasticsearch può essere eseguito su piattaforme diverse. Consente agli utenti di esplorare quantità molto grandi di dati ad altissima velocità.

Caratteristiche generali

Le caratteristiche generali di Elasticsearch sono le seguenti:

  • Elasticsearch è scalabile fino a petabyte di dati strutturati e non strutturati.

  • Elasticsearch può essere utilizzato in sostituzione di archivi di documenti come MongoDB e RavenDB.

  • Elasticsearch utilizza la denormalizzazione per migliorare le prestazioni di ricerca.

  • Elasticsearch è uno dei motori di ricerca aziendali più diffusi ed è attualmente utilizzato da molte grandi organizzazioni come Wikipedia, The Guardian, StackOverflow, GitHub ecc.

  • Elasticsearch è un open source e disponibile con la licenza Apache versione 2.0.

Concetti chiave

I concetti chiave di Elasticsearch sono i seguenti:

Nodo

Si riferisce a una singola istanza in esecuzione di Elasticsearch. Un singolo server fisico e virtuale ospita più nodi a seconda delle capacità delle loro risorse fisiche come RAM, archiviazione e potenza di elaborazione.

Grappolo

È una raccolta di uno o più nodi. Cluster fornisce indicizzazione collettiva e capacità di ricerca su tutti i nodi per interi dati.

Indice

È una raccolta di diversi tipi di documenti e delle loro proprietà. Index utilizza anche il concetto di frammenti per migliorare le prestazioni. Ad esempio, un set di documenti contiene i dati di un'applicazione di social networking.

Documento

È una raccolta di campi in un modo specifico definito in formato JSON. Ogni documento appartiene a un tipo e risiede all'interno di un indice. Ogni documento è associato a un identificatore univoco chiamato UID.

Coccio

Gli indici sono suddivisi orizzontalmente in frammenti. Ciò significa che ogni frammento contiene tutte le proprietà del documento ma contiene un numero inferiore di oggetti JSON rispetto a index. La separazione orizzontale rende lo shard un nodo indipendente, che può essere memorizzato in qualsiasi nodo. Il frammento primario è la parte orizzontale originale di un indice e quindi questi frammenti primari vengono replicati in frammenti di replica.

Repliche

Elasticsearch consente a un utente di creare repliche dei propri indici e frammenti. La replica non solo aiuta ad aumentare la disponibilità dei dati in caso di errore, ma migliora anche le prestazioni di ricerca eseguendo un'operazione di ricerca parallela in queste repliche.

Vantaggi

  • Elasticsearch è sviluppato su Java, il che lo rende compatibile su quasi tutte le piattaforme.

  • Elasticsearch è in tempo reale, in altre parole dopo un secondo il documento aggiunto è ricercabile in questo motore

  • Elasticsearch è distribuito, il che semplifica la scalabilità e l'integrazione in qualsiasi grande organizzazione.

  • La creazione di backup completi è facile utilizzando il concetto di gateway, presente in Elasticsearch.

  • La gestione del multi-tenancy è molto semplice in Elasticsearch rispetto ad Apache Solr.

  • Elasticsearch utilizza oggetti JSON come risposte, il che rende possibile invocare il server Elasticsearch con un gran numero di linguaggi di programmazione diversi.

  • Elasticsearch supporta quasi tutti i tipi di documento tranne quelli che non supportano il rendering del testo.

Svantaggi

  • Elasticsearch non ha il supporto multilingue in termini di gestione dei dati di richiesta e risposta (possibile solo in JSON) a differenza di Apache Solr, dove è possibile nei formati CSV, XML e JSON.

  • Occasionalmente, Elasticsearch ha un problema di situazioni di cervello diviso.

Confronto tra Elasticsearch e RDBMS

In Elasticsearch, l'indice è simile alle tabelle in RDBMS (Relation Database Management System). Ogni tabella è una raccolta di righe proprio come ogni indice è una raccolta di documenti in Elasticsearch.

La tabella seguente fornisce un confronto diretto tra questi termini -

Elasticsearch RDBMS
Grappolo Banca dati
Coccio Coccio
Indice tavolo
Campo Colonna
Documento Riga