Logo elasticsearch

Elasticsearch: Guida all’installazione, funzionalità e concetti base

Imparare Elasticsearch: Guida all’installazione, funzionalità e concetti base

ElasticSearch è un server di ricerca basato su Lucene, con capacità Full Text, con supporto ad architetture distribuite.

Sommario del tutorial

Introduzione

Sviluppatore: Shay Banon

Genere: Motore di ricerca

Data prima versione: 2010

Ultima versione: 7.1.1 (28 maggio 2019)

Sistema operativo: Multipiattaforma

Licenza: Licenza Apache (licenza libera)

Tutorial elasticsearch

 Come Lucene è un software Open Source. Nato nel 2010 e rappresenta un ottima alternativa ad Apache Solr. Elasticsearch può essere un potente strumento di ricerca full text poichè veloce e stabile, scalabile, molti moduli di programma sono già pronti (analytical search, multi-tenancy, grouping & aggregation, ricerca distribuita e ricerca full text) e di facile implementazione grazie a Java, JSON e REST-API. Uno degli svantaggi di Elasticsearch è la cattiva implementazione del concetto open source.

Vediamo alcune differenze con Apache Solr:

 Apache SolrElasticSearch
CommunitySolr ha una comunità di utenti, sviluppatori e collaboratori molto numerosa e matura.ElasticSearch ha una comunità di utenti più piccola, ma attiva e una crescente comunità di contributori.
ScalabilitàEntrambi possono essere ridimensionati in cluster molto grandi.Entrambi possono essere ridimensionati in cluster molto grandi. ElasticSearch è più facile da scalare rispetto alla versione precedente di Solr 4.0 di Solr, ma con Solr 4.0 non è più così.
Licenza e contributiSolr è pienamente impegnata nella filosofia della Apache Software Foundation: Community over Code. La community decide insieme quali aggiornamenti pubblicare.Elasticsearch è open source ed è offerto con licenza Apache gratuita, ma soltanto il team di Elastic decide quali modifiche pubblicare.
SupportoCi sono aziende che forniscono supporto tecnico e di consulenza sia per Solr che per ElasticSearch.Ci sono aziende che forniscono supporto tecnico e di consulenza sia per Solr che per ElasticSearch.

Oggi Elasticsearch è diventato uno dei più importanti motori di ricerca full text su Internet. Aziende come Facebook, GitHub, Netflix, SoundCloud, Wikimedia, Mozilla, Quora, Foursquare, Etsy, GitHub, CERN,Stack Exchange, Center for Open Science e Zalando si affidano a questo motore di ricerca di successo.
Vediamo i vantaggi e gli svantaggi nell’utilizzo di ElasticSearch

Vantaggi
  • Sviluppato in Java, quindi compatibile con ogni piattaforma.
  • Real time, quindi ogni document inserito è ricercabile dal momento dell’inserimento.
  • Distribuito.
  • La creazione di backup completi è semplice utilizzando il concetto di gateway presente in Elasticsearch.
  • Utilizza gli oggetti JSON come risposte, quindi è possibile chiamare il server Elasticsearch con diversi linguaggi di programmazione.
  • Supporta tutti i tipi di documenti tranne quelli che non supportano il rendering del testo.
Svantaggi
  • Risposte solo in JSON.
  • Licenza Open Source Apache, ma solo il team di Elasticsearch può scegliere quali aggiornamenti pubblicare.
Installazione

 E’ possibile trovare i file di installazione gratuitamente sul sito ufficiale di Elastic. Nel seguente tutorial stiamo lavorando con la versione corrente di Elasticsearch. La cartella di installazione è comunque elasticsearch-{version}-{sistema_operativo}.

Operazioni preliminari

  • Impostare la memoria virtuale aggiungendo la proprietà seguente nel file /etc/sysctl.conf:

vm.max_map_count=262144

  • Impostare i descrittori di file aggiungendo la proprietà seguente nel file /etc/security/limits.conf:

elasticsearch hard nofile 65536
elasticsearch soft nofile 65536
elasticsearch soft as unlimited

Prerequisiti

  • Installare la versione di JDK supportata da Elasticsearch (versione 7 o superiore). Per vedere la versione installata sul proprio computer

# Windows (prompt dei comandi)
> java -version
# UNIX OS
$ echo $JAVA_HOME

Dopo aver verificato l’installazione di JDK a seconda del sistema operativo procedere come da istruzioni:

Linux

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-linux-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-7.3.0-linux-x86_64.tar.gz.sha512
tar -xzf elasticsearch-7.3.0-linux-x86_64.tar.gz
cd elasticsearch-7.3.0/

Mac

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-darwin-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-darwin-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-7.3.0-darwin-x86_64.tar.gz.sha512
tar -xzf elasticsearch-7.3.0-darwin-x86_64.tar.gz
cd elasticsearch-7.3.0/

Debian

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-amd64.deb
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-amd64.deb.sha512
shasum -a 512 -c elasticsearch-7.3.0-amd64.deb.sha512
sudo dpkg -i elasticsearch-7.3.0-amd64.deb

Windows
E’ possibile scaricare lo zip dal sito di ElasticSearch e scompattarlo in C:\ oppure è possibile scaricare il file di installazione .msi e seguire i semplici passi.

Inserimento dei Dati

 

   E’ possibile popolare, analizzare indici e dati tramite Kibana, un plug-in open source per Elasticsearch. In dettaglio Kibana fornisce funzionalità di visualizzazione del contenuto indicizzato su un cluster Elasticsearch. Gli utenti possono creare grafici a barre, a linee e a dispersione, o grafici a torta e mappe su grandi volumi di dati. Se non si desidera utilizzare questo software, in alternativa è possibile utilizzare cURL.

Per inserire dei dati in ElasticSearch dobbiamo prima creare un indice:

PUT university

Stiamo creando un indice di nome university. Come risposta avremo:

{“acknowledged”: true}

Per aggiungere dati all’indice:

POST university/_doc/10
{
“nome”:”Università di Stanford”, “descrizione”:”Università privata degli Stati Uniti d’America”,
“affiliazione”:”AAU”, “città”:”Stanford”, “state”:”USA”,
“location”:[37.4280,-122.1697], “fondazione”:1885,
“rating”:4.8

Dove university è il nome dell’indice, _doc è il type infine 10 è l’_id del record. Per quanto riguarda l’indice se si omette verrà auto assegnato da ElasticSearch all’inserimento, altrimenti se già c’è un record con quell’_id viene sovrascritto.
Come risposta avremo:

{
“_index” : “school”,
“_type” : “_doc”,
“_id” : “10”,
“_version” : 1,
“result” : “created”,
“_shards” : {
               “total” : 2,
               “successful” : 1,
                “failed” : 0
                 },
“_seq_no” : 2,
“_primary_term” : 1
}

Concetti Chiave

 

Nodo

Si riferisce a una singola istanza in esecuzione di Elasticsearch. Un singolo server fisico e virtuale può ospitare più nodi in base alle capacità delle loro risorse fisiche come RAM, memoria e potenza di elaborazione.

Cluster

È una raccolta di uno o più nodi. Il cluster offre funzionalità di indicizzazione e ricerca in tutti i nodi per i dati.

Indice

È una raccolta di diversi tipi di documenti e delle loro proprietà. Gli indici utilizzano il concetto di frammenti per migliorare le prestazioni.

Documenti

È una raccolta di campi definito nel formato JSON. Ogni documento appartiene ad una tipologia e risiede all’interno di un indice inoltre ogni documento è associato a un identificatore univoco chiamato UID.

Ogni documento è quindi strutturato con i seguenti metadati:

_index identifica univocamente la collezione di dati,

_type rappresenta la classe alla quale l’oggetto JSON appartiene;

_id E’ una stringa che identifica insieme all’ _index e al _type univocamente il Document.

Shard

Uno shard è l’unità di lavoro di basso livello che contiene una porzione dei dati. Gli indici sono suddivisi “orizzontalmente” in shards. in poche parole ogni shard contiene tutte le proprietà del documento ma contiene un numero inferiore di oggetti JSON rispetto all’indice.

Repliche

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

Se vuoi sapere più di Big Data o tool di storage dai un occhiata alla nostra categoria Big Data

Lascia una risposta

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

Iscriviti alla nostra newsletter

Tieniti aggiornato sulle ultime novità riguardo la XAI e il Deep Learning.