ElasticSearch Tutorial Basic

Introduzione

ElasticSearch è un server di ricerca basato su Lucene, con capacità Full Text, con supporto ad architetture distribuite. 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. Veloce e stabile, scalabile, molti moduli di programma sono già pronti (analytical search, multi-tenancy, grouping & aggregation, ricerca distribuita e ricerca full text), 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 Solr ElasticSearch
Community Solr 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 contributi Solr è 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 faranno parte del codice.
Supporto Ci 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
• Elasticsearch è sviluppato in Java, quidi compatibile con ogni piattaforma.
• Elasticsearch è real time, quindi ogni document inserito è ricercabile dal momento dell’inserimento.
• Elasticsearch è distribuito.
• La creazione di backup completi è semplice utilizzando il concetto di gateway, presente in Elasticsearch.
• Elasticsearch utilizza gli oggetti JSON come risposte, questo rende possibile invocare il server Elasticsearch con diversi linguaggi di programmazione.
• Elasticsearch 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.
• Occasionally, Elasticsearch has a problem of Split brain situations.

Torna al menu di ElasticSearch tutorial

Installazione

E’ possibile trovare i file di installazione gratuitamente sul sito ufficiale di ElasticNel 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
Installazione su 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/
Installazione su 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/
Installazione su 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
Installazione su 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.
Torna al menu di ElasticSearch tutorial

Inserimento dei dati

   E’ possibile popolare, analizzare indici e dati tramite Kibana (puoi saperne di più sulla nostra guida di Kibana), un plug-in open source per Elasticsearch. Fornisce funzionalità di visualizzazione in cima al 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
}

Torna al menu di ElasticSearch tutorial

elastic.co

DOWNLOAD

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

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)

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. Ogni documento è associato a un identificatore univoco chiamato UID.
Ogni documento è 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. Ciò significa che 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.