Elastikos tyrimų duomenų bazė
„Elasticsearch“ yra viena populiariausių „NoSQL“ duomenų bazių, naudojama teksto duomenims kaupti ir ieškoti. Jis pagrįstas „Lucene“ indeksavimo technologija ir leidžia paiešką ieškoti milisekundėmis, remiantis duomenimis, kurie yra indeksuojami.
Remiantis „Elasticsearch“ svetaine, pateikiamas apibrėžimas:
„Elasticsearch“ yra atviro kodo platinamas „RESTful“ paieškos ir analizės variklis, galintis išspręsti vis daugiau naudojimo atvejų.
Tai buvo keli aukšto lygio žodžiai apie „Elasticsearch“. Leiskite mums išsamiai suprasti sąvokas čia.
- Paskirstyta: „Elasticsearch“ turimus duomenis padalija į kelis mazgus ir naudoja šeimininkas vergas algoritmas viduje
- Pailsėti: „Elasticsearch“ palaiko duomenų bazių užklausas per REST API. Tai reiškia, kad mes galime naudoti paprastus HTTP skambučius ir naudoti HTTP metodus, tokius kaip GET, POST, PUT, DELETE ir kt. prieigai prie duomenų.
- Paieškos ir „Analytics“ variklis: ES palaiko sistemoje vykdomas labai analitines užklausas, kurias gali sudaryti sudėtingos užklausos ir keli tipai, pvz., Struktūrizuotos, nestruktūrizuotos ir geografinės užklausos.
- Horizontaliai keičiamas: Šis nuskaitymas reiškia daugiau mašinų pridėjimą į esamą grupę. Tai reiškia, kad ES yra pajėgi priimti daugiau mazgų savo klasteryje ir nenumatyti būtinų sistemos atnaujinimų. Peržiūrėkite žemiau esantį vaizdą, kad suprastumėte mastelio sąvokas:
Vertikalus ir horizontalus skriejimas
Darbo su „Elasticsearch Database“ pradžia
Norėdami pradėti naudoti „Elasticsearch“, jis turi būti įdiegtas mašinoje. Norėdami tai padaryti, skaitykite „Install ElasticSearch“ „Ubuntu“.
Jei norite išbandyti pavyzdžius, kuriuos pateikiame vėliau pamokoje, įsitikinkite, kad esate aktyviai įdiegę „ElasticSearch“.
Elastikos paieška: sąvokos ir komponentai
Šiame skyriuje pamatysime, kokie komponentai ir sąvokos slypi „Elasticsearch“ širdyje. Suprasti šias sąvokas svarbu norint suprasti, kaip veikia ES:
- Klasteris: Klasteris yra serverio mašinų (mazgų) rinkinys, kuriame saugomi duomenys. Duomenys yra padalijami į kelis mazgus, kad juos būtų galima pakartoti, o „ES Server“ neįvyksta vieno gedimo taško (SPoF). Numatytasis klasterio pavadinimas yra elasticsearch. Kiekvienas mazgų mazgas jungiasi prie grupės su URL ir grupės pavadinimu, todėl svarbu, kad šis pavadinimas būtų aiškus ir aiškus.
- Mazgas: Mazgo mašina yra serverio dalis ir vadinama viena mašina. Ji kaupia duomenis ir teikia indeksavimo bei paieškos galimybes kartu su kitais mazgais į grupę.
Atsižvelgdami į horizontalaus mastelio koncepciją, mes galime praktiškai pridėti begalinį mazgų skaičių ES klasteryje, kad suteiktume jam daug daugiau jėgų ir indeksavimo galimybių.
- Indeksas: Indeksas yra šiek tiek panašių savybių dokumentų rinkinys. Indeksas yra beveik panašus į duomenų bazę SQL aplinkoje.
- Tipas: Tipas naudojamas duomenims atskirti tarp to paties indekso. Pavyzdžiui, klientų duomenų bazėje / rodyklėje gali būti keli tipai, pvz., Vartotojas, mokėjimo_tipas ir kt.
Atminkite, kad tipai nebenaudojami iš ES v6.0.0 ir toliau. Kodėl taip buvo padaryta, skaitykite čia.
- Dokumentas: Dokumentas yra žemiausias duomenų vieneto lygis. Įsivaizduokite jį kaip JSON objektą, kuriame yra jūsų duomenys. Indekso viduje galima indeksuoti kuo daugiau dokumentų.
Paieškos tipai „Elasticsearch“
„Elasticsearch“ yra žinomas dėl beveik realiuoju laiku atliekamų paieškos galimybių ir lankstumo, kurį suteikia indeksuojamų ir ieškomų duomenų tipas. Pradėkime studijuoti, kaip naudoti paiešką naudojant įvairių tipų duomenis.
- Struktūrizuota paieška: šio tipo paieška vykdoma naudojant iš anksto nustatytą formatą, pvz., Datas, laikus ir skaičius. Su iš anksto nustatytu formatu yra lankstumas vykdant įprastas operacijas, pavyzdžiui, lyginant vertes įvairiomis datomis. Įdomu, tekstiniai duomenys taip pat gali būti struktūrizuoti. Tai gali atsitikti, kai lauke yra fiksuotas verčių skaičius. Pvz., Duomenų bazių pavadinimas gali būti „MySQL“, „MongoDB“, „Elasticsearch“, „Neo4J“ ir kt. Naudojant struktūrinę paiešką, atsakymas į mūsų vykdomas užklausas yra „taip“ arba „ne“.
- Viso teksto paieška: šio tipo paieškos priklauso nuo dviejų svarbių veiksnių, Aktualumas ir Analizė. Naudodamiesi „Atitikimas“, mes nustatome, ar kai kurie duomenys atitinka užklausą, apibrėždami balą gautiems dokumentams. Šį balą pateikia pati ES. Analizė reiškia teksto suskaidymą į normalizuotus žetonus, kad būtų sukurtas apverstas indeksas.
- Daugialypė paieška: analizuojamų užklausų vis didėjant ES saugomiems duomenims, mes paprastai susiduriame ne tik su paprastomis atitikties užklausomis. Reikalavimai išaugo, kad būtų galima vykdyti užklausas, kurios apima kelis laukus ir turi surūšiuotą duomenų sąrašą, kurį mums grąžina pati duomenų bazė. Tokiu būdu duomenys galutiniam vartotojui gali būti pateikiami daug efektyviau.
- Tikrumo atitikimas: užklausos šiandien yra daug daugiau nei tik nustatymas, ar kai kuriuose tekstiniuose duomenyse yra kita eilutė, ar ne. Kalbama apie duomenų santykio nustatymą, kad juos būtų galima įvertinti ir suderinti su kontekstu, kuriame duomenys yra suderinami. Pavyzdžiui:
- Kamuolys pataikė į Joną
- Jonas pataikė į Kamuolį
- Jonas nusipirko naują kamuolį, kurį pasiekė Jaeno sodas
Atitikties užklausoje bus ieškomi visi trys dokumentai Kamuolys pataikė. Pagal artumo paiešką galime sužinoti, kiek šie du žodžiai rodomi toje pačioje eilutėje ar pastraipoje, dėl kurios jie atitiko.
- Dalinis atitikimas: dažnai mums reikia vykdyti dalines atitikimo užklausas. Dalinis atitikimas leidžia vykdyti užklausas, kurios atitinka iš dalies. Norėdami tai vizualizuoti, pažvelkime į panašias SQL pagrįstas užklausas:
SQL užklausos: dalinis atitikimas
KUR vardas panašus į „% john%“
IR pavadinkite LIKE "% red%"
IR pavadinkite LIKE "% garden%"Kai kuriais atvejais mums reikia vykdyti tik dalines rungtynių užklausas, net jei jas galima laikyti grubios jėgos metodais.
Integracija su Kibana
Kalbant apie analizės variklį, paprastai turime vykdyti analizės užklausas verslo žvalgybos (BI) srityje. Kalbant apie verslo analitikus ar duomenų analitikus, nebūtų teisinga manyti, kad žmonės žino programavimo kalbą, kai nori vizualizuoti ES klasterio duomenis. Šią problemą išsprendė Kibana. „Kibana“ siūlo tiek daug privalumų BI, kad žmonės iš tikrųjų gali vizualizuoti duomenis naudodami puikų, pritaikomą prietaisų skydelį ir duomenis matyti neaktyviai. Pažvelkime į kai kuriuos jo pranašumus čia.
Interaktyvios diagramos
Kibanos šerdyje yra tokios interaktyvios diagramos:
„Kibana“ palaiko įvairių tipų diagramas, pvz., Skritulines diagramas, saulės spindulius, histogramas ir daug daugiau, kurios naudoja visas ES kaupimo galimybes.
Žemėlapių palaikymas
„Kibana“ taip pat palaiko išsamią geografinę agregaciją, kuri leidžia mums geografiškai susieti duomenis. Ar ne šaunu?!
Iš anksto sudarytos suvestinės ir filtrai
Naudojant iš anksto sukurtas suvestines ir filtrus, „Kibana“ informacijos suvestinėje galima tiesiog suskaidyti, išmesti ir vykdyti labai optimizuotas užklausas. Vos keliais paspaudimais galima vykdyti suvestines užklausas ir pateikti rezultatus interaktyvių diagramų pavidalu.
Paprastas informacijos suvestinių paskirstymas
Naudojant „Kibana“ taip pat labai lengva bendrinti informacijos suvestines daug platesnei auditorijai, nedarant jokių pakeitimų prietaisų skydelyje naudojant tik informacijos suvestinę režimą. Informacijos suvestines galime lengvai įterpti į savo vidinį wiki ar tinklalapius.
Vaizdai, pagaminti iš „Kibana“ produkto puslapio.
Naudojant „Elasticsearch“
Norėdami pamatyti informaciją apie egzempliorių ir sankaupos informaciją, vykdykite šią komandą:
Dabar galime pabandyti įterpti kai kuriuos duomenis į ES naudodami šią komandą:
Įterpiami duomenys
garbanoti \-X POST 'http: // localhost: 9200 / linuxhint / hello / 1' \
-H „Turinio tipas: application / Json“ \
-d '"name": "LinuxHint"' \
Štai ką mes grąžiname naudodami šią komandą:
Pabandykime gauti duomenis dabar:
Gaunami duomenys
garbanos -X GAUTI 'http: // localhost: 9200 / linuxhint / hello / 1'Vykdydami šią komandą, gauname šį išvestį:
Išvada
Šioje pamokoje apžvelgėme, kaip galime pradėti naudoti „ElasticSearch“, kuris yra puikus „Analytics“ variklis ir puikiai palaiko beveik realiu laiku atliekamą laisvo teksto paiešką.