Utilizzato per ricerche scalabili e in real time, ElasticSearch è il motore di ricerca più utilizzato negli ultimi mesi.
Semplice da installare e da utilizzare, è estremamente flessibile ed è stato sviluppato per essere implementato su architetture cloud. Le caratteristiche principali di ElasticSearch che, nel gennaio 2016, lo hanno reso il motore di ricerca più popolare sono sostanzialmente:
– Ricerca fullx text
– Rrisposte real time
– Distribuito e scalabile
– Cloud oriented
– Schema free
– API Restful /Json api
– Zero configuration
La prima cosa da fare è installare Java lanciando i seguenti comandi, il nostro consiglio è quello di utilizzare i repository webupd8team.
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee /etc/apt/sources.list.d/webupd8team-java.list echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886 apt-get update apt-get install oracle-java8-installer
Per installare ElasticSearch possiamo utilizzare i repository ufficiali, andiamo ad inserirli con i comandi
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add - echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
Possiamo a questo punto installare il software
apt-get update && apt-get install elasticsearch
Una volta che ElasticSearch è installato possiamo inserirlo nei servizi all’ avvio con i seguenti comandi
update-rc.d elasticsearch defaults 95 10 /bin/systemctl daemon-reload /bin/systemctl enable elasticsearch.service
Nativamente il software binda l’ip locale (127.0.0.1) se vogliamo che sia raggiungibile dall’ esterno possiamo configurare il binding dell’ ip pubblico nel file:
/etc/elasticsearch/elasticsearch.yml
inserendo la direttiva
network.host: IP
dove IP è il nostro ip pubblico, a questo punto non ci resta che avviare il servizio con il comando
service elasticsearch start
Se tutto è andato buon fine possiamo aprire il nostro browser e connetterci alla porta 9200 del server, avremo una risposta rimile alla seguente che mostrerà lo stato del server e una serie di informazioni.
{ "name" : "Gazelle", "cluster_name" : "elasticsearch", "version" : { "number" : "2.2.1", "build_hash" : "d045fc29d1932bce18b2e65ab8b297fbf6cd41a1", "build_timestamp" : "2016-03-09T09:38:54Z", "build_snapshot" : false, "lucene_version" : "5.4.1" }, "tagline" : "You Know, for Search" }
Prima di fare qualche esempio vogliamo riportarvi qualche accenno sull’architettura, questa è composta da:
– un cluster è un insieme di nodi che condividono i propri dati e il carico di lavoro;
– uno shard è l’unità di lavoro di basso livello che contiene una porzione dei dati;
– un indice è lo spazio logico, che indica uno o più shard, è dove vengono immagazzinati i dati all’interno dei nodi;
– il document rappresenta la porzione di dati strutturati da immagazzinare appartenenti a un
singolo oggetto.
Ogni oggetto è strutturato con i seguenti metadati:
_index identifica univocamente la collezione di dati, assimilabile al database negli RDBMS;
_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.
Facciamo adesso un piccolo esempio di utilizzo, utilizzeremo curl da riga di comando, è quindi un prerequisito averlo installato.
Andiamo ad inserire un oggetto con indice “seeweb”, di tipo “server” e id 1
curl -XPUT "http://IP:9200/seeweb/server/1" { "name": "Server Test Elastic 1", "os": "Debian Linux 8", "ip": "127.0.0.1" }'
La risposta che avremo sarà la seguente:
{"_index":"seeweb","_type":"server","_id":"1","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"created":true}
Possiamo a questo punto inserire tutti gli oggetti che ci interessano, e provare a cercarli, la ricerca è quindi il punto cruciale, una query di esempio è:
curl 'http://IP:9200/seeweb/server/_search?q=os:Linux'
che cercherà tutti i server che hanno nel campo os la parola Linux.
Le modalità di ricerca sono molto vaste, ampie e personalizzabili, in questo articolo vogliamo stimolare il vostro interesse e non fare una guida di riferimento su questa tenologia; se deciderete di utilizzarla potrete approfondire le modalità di ricerca e trovare la soluzione migliore per le vostre esigenze.