Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ElasticSearch è un server di ricerca basato su Lucene, con capacità Full Text, con supporto ad architetture distribuite.
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)
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.
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 pubblicare. |
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
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
vm.max_map_count=262144
elasticsearch hard nofile 65536
elasticsearch soft nofile 65536
elasticsearch soft as unlimited
Prerequisiti
# 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.
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
}
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.
È una raccolta di uno o più nodi. Il cluster offre funzionalità di indicizzazione e ricerca in tutti i nodi per i dati.
È una raccolta di diversi tipi di documenti e delle loro proprietà. Gli indici utilizzano il concetto di frammenti per migliorare le prestazioni.
È 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.
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.
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.