O idee în spatele Elastic Stack și Elasticsearch

(10 aprilie 2020 )

O scurtă introducere în Elasticsearch și ELK Stack. De ce ce și cum.

ELK https : //aasconsultants.files.wordpress.com/2019/03/elk.png

Istoric

Elastic NV este o companie fondată în 2012 la Amsterdam, Shay Banon a fost fondatorul Elasticsearch. Prima sa iterație s-a numit Busolă. Al doilea a fost Elasticsearch (cu Apache Lucene sub capotă). El-open source Elasticsearch, a creat canalul IRC #elasticsearch și a așteptat să apară utilizatorii. Răspunsul a fost impresionant. Utilizatorii au luat-o în mod natural și ușor. Adopția a trecut prin acoperiș, a început să se formeze o comunitate și oamenii au observat – și anume Steven Schuurman, Uri Boness și Simon Willnauer. Împreună, au fondat o companie de căutare.

Ce este Elastic Stack?

Elastic Stack este, de asemenea, cunoscut sub numele de ELK stack. Practic conține trei proiecte open-source.

  1. Elastic Search – Motor de căutare și analiză .
  2. Logstash – Canal de procesare a datelor.
  3. Kibana – Tablou de bord pentru a vizualiza datele.

Toate aceste trei au propria lor semnificație și prin combinarea acestor trei Vom primi analize și analize ale datelor dvs.

De ce este nevoie?

Conform sondajului, Facebook generează 4 date Petabytes în fiecare zi, adică 40 de milioane de GB . Data, acum este o lume a datelor. Deci, avem nevoie de un sistem care să analizeze datele noastre.

Așteptați !! Ce înseamnă asta? Analizați.

Există doi termeni de înțeles.

  1. Analiză – În partea de analiză, veți obține rezultate din datele anterioare sau din datele existente pe care le aveți.
  2. Analytics – Când doriți să preziceți cerințele utilizatorilor, doriți vizualizarea bazată pe grafice pentru o mai bună claritate a afacerii și doriți, de asemenea, să înțelegeți tiparele de date.

Deci, aceste două instrumente cele mai importante pentru orice afacere. Puteți să le realizați prin Date . Și cu ajutorul acestor două, puteți să vă dezvoltați afacerea și să obțineți informații clare despre afaceri.

Acum, este Cum? Deoarece nu este o sarcină ușoară analizarea acestor date mari în mai puțin timp.

Provocări și soluții.

Ce se întâmplă în companii foarte mari, obțineți date din diferite locuri în diferite formate. Poate fi JSON sau XML orice. Deci, avem nevoie de un mecanism pentru a obține date întregi într-un singur loc și, de asemenea, într-un singur format. Deci, pentru asta, folosim Logstash .

Acum, când obținem date, trebuie să aranjăm datele în o ordine sistematică, astfel încât să putem evalua lucrurile foarte ușor. De asemenea, vrem să analizăm datele, în acest caz, mai întâi, trecem cu datele foarte repede. Pentru asta avem Elasticsearch. Elasticsearch este dezvoltat în Java și este lansat ca open-source în condițiile Licență Apache .

Acum, după finalizarea acestui lucru, avem nevoie de o platformă de vizualizare în care să putem arăta analiza datelor noastre. Acolo Kibana intră în imagine. Așa a funcționat întreaga stivă Elastic. Pentru mai bune Statistici despre afaceri .

Proces https://hackernoon.com/hn-images/1*Tvmj3XsqH4hJLvXnfm6sZQ.png

Configurarea Elasticsearch, Logstash și Kibana

La început, să descărcăm cele trei software open-source de pe linkurile lor respective [ elasticsearch ], [ logstash ] și [ kibana ]. Dezarhivați fișierele și puneți-le pe toate trei în folderul proiectului.

Să începem.

Pasul 1 – Configurați Kibana și Elasticsearch pe sistemul local. Rulăm Kibana cu următoarea comandă în folderul bin al Kibana.

bin\kibana

În mod similar, Elasticsearch este configurat astfel:

bin\elasticsearch

Acum, în cele două terminale separate, putem vedea ambele module care rulează.Pentru a verifica dacă serviciile rulează deschise localhost: 5621 pentru Kibana și localhost: 9600 pentru Elasticsearch.

Aici suntem pregătiți cu set up pentru elastic stack. Acum accesați localhost: 5621 și deschideți instrumentele dev aici în consolă. Este locul în care puteți scrie interogări Elasticsearch.

Consola Kibana

De data aceasta vom vorbi mai multe despre Elasticsearch. Acum vom vedea cum funcționează exact Elasticsearch.

Căutare elastică

Lucrarea căutării elastice

Înainte de orice operațiune, trebuie să ne indexăm datele. Odată indexate în Elasticsearch, utilizatorii pot rula interogări complexe în raport cu datele lor și pot folosi agregări pentru a extrage rezumate complexe ale datelor lor. Elasticsearch stochează date ca documente JSON și folosește Datastrucre așa-numitul index inversat , care este conceput pentru a permite căutări foarte rapide cu text integral . Un index inversat listează fiecare cuvânt unic care apare în orice document și identifică toate documentele în care apare fiecare cuvânt.

Pentru o mai bună înțelegere, vom împarte Elasticsearch în mai multe subiecte.

  1. Gestionarea documentelor
  2. Mappings
  3. Analysis
  4. Metodologie de căutare
  5. Agregare și filtre

Cel mai important aspect al Elasticsearch este să înțelegem arhitectura sa.

Cluster

În Elasticserach, stocăm datele noastre în noduri, poate exista un număr de noduri într-o mașină. Și fiecare nod este legat de cluster. Deci, Cluster este un set de noduri .

Documente

Vă stocați datele ca documente care sunt obiecte JSON. Deci, cum se organizează aceste date în cluster? Răspunsul este indici .

În lumea bazelor de date relaționale, documentele pot fi comparate cu un rând dintr-un tabel.

Index

Indicii Elasticsearch sunt partiții logice ale documentelor și poate fi comparat cu o bază de date din lumea bazelor de date relaționale.

Tipuri

Fiecare index are unul sau mai multe tipuri de mapare care sunt utilizate pentru a împărți documentele într-un grup logic. Este poate să fie comparat cu un tabel din lumea bazelor de date relaționale.

Fiecare document este stocat ca un index . Indexul pe care îl puteți spune este colecția de documente. Acest lucru are caracteristici similare, de exemplu, Departamentul va avea un index, iar angajații au un index B, adică sunt înrudite logic. în bucăți mai mici.

  • Fiecare piesă este cunoscută sub numele de fragment.
  • Fragmentarea se face la nivel de index.
  • Fragmentul este la fel ca un index. Pentru scalabilitate. Cu sharding, puteți stoca miliarde de documente într-un singur index. Există, de asemenea, replici, dar deocamdată este suficient pentru noi să începem și să înțelegem Elasticsearch.

    Deci, să mergem mai departe spre construcție și motor de căutare.

    1. Gestionarea documentelor

    Înainte, obțineți managerul de pachete Elasticserach.

    npm i elasticsearch

    Pas -1- Conectați aplicația dvs. la Elasticsearch urmând.

    Conexiune

    Pasul 2 – Creați un index pentru un exemplu. Creăm un index ca guvernator

    Creați index

    Pasul 3 – Acum vom adăuga documente în index gov și în index gov există un tip numit circumscripții .

    Vă puteți raporta deoarece există o bază de date numită gov, iar tabelul este circumscripții.

    Adăugarea de documente

    2. Mappings

    Cartografierea este procesul de definire a documentului și a câmpurilor sale. La fel ca și definirea schemei de tabel în RDBMS.

    Pasul 4 – Acum vom defini mapări pentru a indexa circumscripțiile de tip gov.

    Mappings

    3. Analiză

    Analiza textului este procesul de conversie a textului nestructurat corpul unui e-mail sau al unei descrieri a produsului, într-un format structurat optimizat pentru căutare.

    Elasticsearch efectuează analize de text la indexare sau căutare

    text câmpuri . Ceea ce am definit în mapări. Acesta este factorul cheie pentru motorul de căutare.

    În mod implicit, Elasticsearch folosește

    standard analizor pentru analiza tuturor textelor. Analizatorul standard vă oferă asistență prealabilă pentru majoritatea limbilor naturale și a cazurilor de utilizare . Dacă alegeți să utilizați analizorul standard așa cum este, nu este necesară nicio altă configurație. De asemenea, vă puteți crea propriul analizor personalizat.

    4. Metodologia căutării

    Există diferite tipuri de interogări pe care le puteți aplica pentru Elasticsearch. Prin aceasta, veți obține rezultate în consecință. Aici voi oferi un exemplu de bază al unei interogări.

    Cea mai simplă interogare, care se potrivește cu toate documentele.

    Interogare de căutare

    Interogări

    Interogările compuse înglobează alte interogări compuse sau frunze, fie pentru a-și combina rezultatele și scorurile, pentru a-și schimba comportamentul sau pentru a comuta de la interogare la contextul de filtrare.

    Interogarea implicită pentru combinarea mai multor clauze de interogare frunze sau compuse, ca must, should, , sau filter clauze. Clauzele must și should au scorurile combinate.

    Textul integral interogările vă permit să căutați câmpuri de text analizate , cum ar fi corpul unui e-mail. Șirul de interogare este procesat folosind același analizor care a fost aplicat câmpului în timpul indexării. Acesta vă va analiza contribuția. Dacă datele introduse nu sunt exacte, dar totuși, veți obține un rezultat.

    Efectuarea de asocieri complete în stil SQL într-un sistem distribuit precum Elasticsearch este prohibitiv de costisitoare. În schimb, Elasticsearch oferă două forme de îmbinare care sunt concepute pentru a se scala pe orizontală.

    1.

    nested interogare

    2.

    has\_child și

    has\_parent interogări

    Acest grup conține interogări care nu se încadrează în celelalte grupuri. S-a constatat că documentele care au o natură similară, interogările fixate, de asemenea, există multe altele, vă rog consultați documentația .

    Puteți utiliza interogări la nivel de termen pentru a găsi documente bazate pe Valorile din datele structurate. Exemple de date structurate includ intervale de date, adrese IP, prețuri sau coduri de produs.

    Spre deosebire de interogările cu text complet, interogările la nivel de termen fac nu analizați termenii de căutare. În schimb, interogările la nivel de termen se potrivesc cu termenii exacți stocați într-un câmp. Acesta va găsi potrivirea exactă a intrării în care, la fel ca în primul text, va fi analizat, apoi căutați, astfel încât să existe o diferență mare între interogarea la nivel de termen și interogarea textului complet. Agregare și filtre

    În contextul unui filtru, o clauză de interogare răspunde la întrebarea „ Se potrivește acest document cu această clauză de interogare? Răspunsul este un simplu Da sau Nu – nu sunt calculate scoruri. Contextul de filtrare este utilizat în principal pentru filtrarea datelor structurate, de ex.

    • Faceți acest lucru timestamp se încadrează în intervalul 2015 până în 2016?
    • Este câmpul status setat la "published"?

    Filtrele utilizate frecvent vor fi memorate în cache automat de Elasticsearch, pentru a accelera performanța.

    Contextul filtrului este în vigoare ori de câte ori o clauză de interogare este trecută către un filter, cum ar fi parametrii filter sau must\_not din

    bool interogare, parametrul filter din interogarea

    constant\_score sau agregarea

    filter .

    Odată cu agregarea este mai asemănător cu ceea ce este în RDBMS, veți găsi informații medii, sumare și multe date folosind interogări complexe.

    Rezumat

    1. Ce este Elastic Stack.
    2. Cum funcționează ELK.
    3. Ce este Elasticsearch și funcționează.
    4. Câteva întrebări de bază despre acesta.

    Ce urmează !!

    Deoarece este un subiect uriaș de acoperit. dar am încercat să fac o scurtă introducere despre ELK și Elasticsearch. Apoi, vom construi propriul nostru motor de căutare, cum ar fi aplicația, utilizând Elasticsearch, unde voi acoperi și o parte de codificare. Cum să-i mențin structura fișierului și alte lucruri.

    Concluzie

    Elastic Stack este o tehnologie foarte importantă de învățat. Veți aplica acest lucru în oricare dintre proiectele dvs., iar ELK Stack este cel mai frecvent utilizat ca instrument de analiză a jurnalelor . Popularitatea sa constă în faptul că oferă o modalitate fiabilă și relativ scalabilă de a agrega date din mai multe surse, mai rămân multe lucruri, dar după aceasta, puteți începe cu Elasticsearch. Vă recomandăm să parcurgeți documentația . Dacă aveți întrebări sau găsiți ceva în neregulă cu conținutul, vă rugăm să lăsați un comentariu.

    Mulțumesc 🙂