ElasticSearch este un motor de cautare de tip enterprise, open-source, usor scalabil. Accesibil printr-un API extins si elaborat, ElasticSearch poate realiza cautari extrem de rapide, oferind aplicatiilor dvs. numeroase date pe care le puteti colecta si analiza.

ElasticSearch este un motor de cautare care utilizeaza o baza de date unica sau distribuita, bazata pe tehnologia Apache Lucene si dezvoltat in Java. Ofera functionalitati avansate de cautare si agregare, disponibilitate ridicata, securitate si alte caracteristici de gestionare a datelor. Platforma ofera  functii precum thread-pooling, API de monitorizare nod/cluster, API de monitorizare a datelor, gestionarea cluster-ului etc.

Pe scurt, ElasticSearch ofera functionalitati de stocare si cautare pentru noduri simple sau clustere mari de date distribuite in centre de date.

Incepand cu luna februarie 2021 HostX ofera instante ElasticSearch private sau la cerere, clustere ElasticSearch. Pentru mai multe detalii va invitam sa consultati pagina dedicata a serviciului ElasticSearch.

Pentru ce este utilizat ElasticSearch?

ElasticSearch este o alegere perfecta pentru magazinele online, analiza seriilor cronologice de date (loguri, valori, etc.) si informatii geospatiale. WordPress, PrestaShop, Magento sau Joomla ofera pluginuri dedicate pentru integrarea cu instante ElasticSearch.

ElasticSearch este recomandat pentru a crea functionalitati de completare automata, pentru a analiza continutul lingvistic si pentru a construi caracteristici de detectare a anomaliilor. ElasticSearch este utilizat pe scara larga pentru IoT (Internet of Things).

 

ElasticSearch: Caracteristici cheie

Cautare rapida si precisa in volume mari de date

Sistemele conventionale de gestionare a bazelor de date SQL nu sunt concepute pentru cautari full-text si au performante reduse pentru aceste operatiuni.

ElasticSearch abordeaza diferit necesitatea accesului rapid si a prelucrarii datelor semi-structurate si nestructurate intr-un mediu distribuit. Interogarile care ar dura mai mult de 10 secunde folosind SQL, vor afisa rezultate in mai putin de 10 milisecunde in Elasticsearch – folosind acelasi hardware!

Pentru a oferi performante ridicate la citire si scriere, Elasticsearch utilizeaza structuri de date optimizate pentru diferite tipuri de date. De exemplu, cautarea rapida a textului complet in ElasticSearch este activata prin asa-numitii indecsi inversati (inverted indexes). Acesti indecsi constau intr-o lista de cuvinte unice care apar in fiecare document si pentru fiecare cuvant o lista a tuturor documentelor in care acesta apare.

ElasticSearch este bine optimizat pentru date geospatiale si numerice cu algoritmi avansati de cautare binara (BKD trees).

Aceasta functionalitate de cautare rapida este accesibila printr-un API REST simplu bazat pe JSON si un limbaj de interogare cunoscut sub numele de Query DSL.

O interogare examineaza una sau mai multe valori tinta si marcheaza fiecare dintre elementele din rezultate in functie de cat de bine se potrivesc cu scopul interogarii. Operatorii de interogare va permit sa optimizati interogari simple sau complexe care adesea returneaza rezultate din seturi de date mari, in doar cateva milisecunde.

In general, designul ElasticSearch este mult mai simplu decat o baza de date constransa de scheme, tabele, campuri, randuri si coloane.

 

Indexarea documentelor in Repository

In timpul unei operatiuni de indexare, ElasticSearch converteste datele brute, cum ar fi fisierele de loguri sau fisierele de mesaje, in documente interne si le stocheaza intr-o structura de date de baza similara cu un obiect JSON. Fiecare document este un set simplu de chei si valori corelate: cheile sunt siruri, iar valorile sunt unul dintre numeroasele tipuri de date: siruri, numere, date sau liste.

Adaugarea documentelor in ElasticSearch este simpla si este usor de automatizat. Pur si simplu faceti un HTTP POST care va transmite documentul ca un simplu obiect JSON. Cautarile se fac si cu JSON: trimiteti interogarea intr-un HTTP GET cu un obiect JSON. API-ul RESTful faciliteaza preluarea, trimiterea si verificarea datelor direct dintr-o linie de comanda. Multi dezvoltatori folosesc instrumentul cURL pentru debugging si dezvoltare cu ElasticSearch, chiar daca dezvolta cu Python sau Ruby.

 

Stocare de documente denormalizata: acces rapid si direct la datele dvs.

Este important sa ne amintim ca ElasticSearch nu este o baza de date relationala astfel incat de cele mai multe ori conceptele RDBMS nu se vor aplica. Cel mai important concept pe care trebuie sa-l lasati deoparte atunci cand ati utilizat bazele de date conventionale este normalizarea. Nativ, ElasticSearch nu permite imbinari sau subinterogari, astfel incat denormalizarea datelor dvs. este esentiala.

ElasticSearch va stoca de obicei un document o singura data pentru fiecare registru in care se afla. Desi acest lucru este contraintuitiv din perspectiva unui RDBMS conventional, este optim pentru ElasticSearch. Cautarile full-text vor fi extrem de rapide deoarece documentele sunt stocate in imediata apropiere a metadatelor corespunzatoare din index. Acest design reduce considerabil numarul de citiri de date, iar ElasticSearch limiteaza rata de crestere a indexului, mentinandu-l comprimat.

 

Activarea functionalitatii de cautare avansata si completare automata

ElasticSearch expune puternica biblioteca Apache Lucene si functionalitati native ElasticSearch pentru a permite completarea automata, caracteristica „did-you-mean”, elementele de evidentiere si conceptul de ultima generatie de „percolatoare”.

Completarea automata

ElasticSearch include o functie de completare automata care ii ajuta pe utilizatori sa gaseasca documentele relevante pe masura ce introduc un string (text). Cei care activeaza aceasta caracteristica pot utiliza parametrul fuzziness care returneaza rezultatul probabil chiar daca exista o greseala de scriere.

Functionalitatea “Did-you-mean”

API-ul ElasticSearch simplifica implementarea functionalitatii “Did-you-mean” (Ai vrut sa spui…) care permite corectarea interogarilor cu greseli de scriere si sugerarea celei mai relevante cereri de cautare. Aceasta caracteristica este implementata cu modelul avansat de limbaj n-gram care imparte cuvintele in tokenuri (simboluri) morfologice scurte si care pot fi potrivite cu interogarile utilizatorilor.

Evidentieri

Elementele de evidentiere sunt excelente pentru cautari full-text in documente. Pentru astfel de tipuri de documente, ele pot returna toate aparitiile cuvantului sau expresiei solicitate. Poate fi utilizata pentru activarea functionalitatii avansate de cautare in aplicatii orientate catre clienti.

Percolatoare

Percolarea este implementarea unui model de „cautare inversa”. In acest model, interogarile utilizatorilor sunt stocate ca documente in indexul ElasticSearch si fiecare dintre aceste interogari se executa impotriva documentelor din celalalt index pentru a gasi documente relevante iar utilizatorii pot obtine documente relevante fara a trimite interogari reale. Percolatoarele pot fi utilizate in motoarele de recomandare pentru a stoca interesele utilizatorilor ca „interogari” si pentru a le potrivi cu documentele adaugate recent (melodii, filme etc.)

 

Arhitectura distribuita si scalabila

ElasticSearch este scalabil pana la mii de servere si poate gazdui petabytes (PB) de date. Capacitatea sa enorma rezulta direct din arhitectura sa elaborata si distribuita.

In ElasticSearch, aceste operatii au loc automat:

  • Partitionarea documentelor in „shards” sau fragmente de baze de date distincte (containere)
  •  Intr-un cluster multi-nod, distribuirea documentelor catre fragmente de baze de date (shards) care se afla pe toate nodurile
  • Echilibrarea fragmentelor de baze de date pe toate nodurile dintr-un cluster pentru a gestiona uniform indexarea si cautarea
  • Cu replicare, duplicarea fiecarui fragment (shard) pentru a oferi redundanta si solutii de rezerva
  • Directionarea request-urilor de la orice nod din cluster catre anumite noduri care contin datele specifice de care aveti nevoie
  • Adaugarea si integrarea fara probleme a nodurilor noi pe masura ce doriti sa cresteti dimensiunea clusterului
  • Redistribuirea fragmentelor de baze de date (shards) pentru recuperarea automata a pierderii unui nod

 

Utilizarea analizei de date incorporate

ElasticSearch nu este doar un motor de cautare, ci un instrument puternic care poate fi utilizat pentru analiza datelor. Acesta prezinta urmatoarele caracteristici:

  • Metrics aggregations – Cu ElasticSearch puteti extrage diverse statistici, cum ar fi media ponderata,  min/max etc. din indecsi. De asemenea, puteti imbogati aceste agregari cu scripturi.
  • Buckets aggregations –  Doriti sa analizati categorii distincte din datele dvs. separat sau in comparatie? ElasticSearch buckets aggregations face simpla crearea de diferite bucket-uri din datele indexului, carora puteti sa le aplicati histograme si agregari de valori pentru a compara diferite bucket-uri. Puteti aplica agregari de valori pentru fiecare bucket pentru a obtine diferite statistici.
  • Pipeline aggregations – functioneaza pe rezultatul produs de alte agregari adaugandu-le valori si statistici granulare.

Toate aceste agregari pot fi aplicate la momentul cautarii intr-o singura solicitare ceea ce face foarte rapida analiza datelor stocate in indexurile ES. ES o alegere foarte buna pentru analiza datelor, monitorizare, extragerea datelor, analiza textului si chiar sarcini complexe de invatare automata.

 

Activarea analizei si procesarii avansate a textului

Elasticsearch este un motor de cautare full-text care necesita in mod natural functii avansate de analiza a textului pentru a procesa textul stocat in documentele Elasticsearch. Elasticsearch accepta urmatoarele caracteristici pentru multe limbi folosind instrumente incorporate si pluginuri specifice limbii:

  • Analizoare – Puteti utiliza analizatoare ES pentru a detecta spatiul alb, pentru a gasi cuvinte cheie, modele si caractere specifice. Elasticsearch este livrat cu multe plugin-uri de analiza specifice limbii, care pot ajuta la indicarea familiilor si structurilor morfologice in datele lingvistice din multe limbi.
  • Tokenizer-uri – Tokenize-urile pot imparti textul in token-uri precum cuvinte sau caractere. Elasticsearch accepta, de asemenea, tokenize-uri n-gram si n-gram marginale, care pot crea o fereastra glisanta de litere continue in cuvinte. Aceste tokenize-uri pot fi utilizate pentru functionalitatea “did-you-mean”, pentru modele de procesare a limbajului natural si pentru analiza statistica a limbajului.
  • Token-uri si filtre caractere – Aceste filtre pot fi folosite pentru a inlocui token-uri si caractere specifice in conformitate cu unele reguli. De exemplu, un filtru de caractere HTML este folosit pentru a extrage si decoda caracterele HTML gasite in texte.

Toate aceste caracteristici pot fi utilizate pentru a analiza textul nestructurat (de exemplu, recenzii, comentarii) si pentru a le transforma in date structurate care pot fi utilizate in conductele de analiza a datelor si de invatare automata.

 

Elasticsearch Index Lifecycle Management (ILM)

Aplicatiile bogate in date si bazate pe evenimente aduc cu sine provocarea stocarii si gestionarii unor volume imense de date, cum ar fi loguri, valori, actiuni ale utilizatorilor site-ului web etc. Unele dintre aceste date trebuie stocate permanent si altele doar temporar. Pentru a evita suprautilizarea stocarii si cresterea costurilor, companiile ar trebui sa aiba un mod flexibil de gestionare a indexurilor.

ElasticSearch Index Lifecycle Management (ILM) a fost dezvoltat pentru a raspunde acestei preocupari. ILM permite crearea de politici automatizate pentru gestionarea indicilor pe baza cerintelor lor de performanta si retentie.

Folosind ILM, puteti genera noi indici si sterge indici vechi pentru a indeplini standardele de retentie a datelor. Aceasta caracteristica este utila in special pentru gestionarea seriilor cronologice de date (loguri, valori, etc.)

 

Loguri si procesare

Cautarea rapida si granulara a textului, caracteristicile avansate de agregare, precum si capacitatile dezvoltate de distributie a clusterelor si fragmentarea, fac din ElasticSearch o solutie excelenta pentru stocarea si procesarea logurilor si valorilor.

ElasticSearch poate fi usor integrat cu agregatori de loguri precum Logstash pentru a aduna date dintr-o multitudine de surse si aplicatii simultan. Jurnalele preprocesate pot fi apoi agregate si analizate folosind interogari ElasticSearch DSL, filtre si alte caracteristici discutate mai sus.

ElasticSearch poate fi integrat cu Kibana pentru a vizualiza valori si date oferind administratorilor de cluster si analistilor de date o reprezentare excelenta a starii clusterului si a aplicatiei.