Num. Verde 800 11 28 25

ElasticSearch: ricerche performanti

Indice dei contenuti

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.

 

CONDIVIDI SUI SOCIAL

Condividi su linkedin
Condividi su twitter
Condividi su facebook
Condividi su whatsapp
Condividi su email

Altri articoli da non perdere

Lascia un commento

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

+ 7 = 11