ElasticSearch: ricerche performanti

ElasticSearch ricerche performanti

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.

 

No Comments

Post a Comment

11 − 8 =

*

Accedi

Password dimenticata?