Baza podataka Elasticsearch
Elasticsearch jedna je od najpopularnijih NoSQL baza podataka koja se koristi za pohranu i pretraživanje podataka zasnovanih na tekstu. Temelji se na tehnologiji indeksiranja Lucene i omogućuje pronalaženje pretraživanja u milisekundama na temelju podataka koji se indeksiraju.
Na temelju web stranice Elasticsearch, evo definicije:
Elasticsearch je distribucija otvorenog koda, RESTful motor za pretraživanje i analitiku sposoban riješiti sve veći broj slučajeva korištenja.
To su bile neke riječi na visokoj razini o Elasticsearchu. Razumijemo pojmove ovdje detaljno.
- Distribuirano: Elasticsearch dijeli podatke koje sadrži na više čvorova i koristi ih gospodar-rob algoritam interno
- Miran: Elasticsearch podržava upite baze podataka putem REST API-ja. To znači da možemo koristiti jednostavne HTTP pozive i HTTP metode poput GET, POST, PUT, DELETE itd. za pristup podacima.
- Search and Analytics motor: ES podržava visoko analitičke upite za pokretanje u sustavu koji se mogu sastojati od agregiranih upita i više vrsta, poput strukturiranih, nestrukturiranih i geo upita.
- Horizontalno skalabilno: Ova vrsta skaliranja odnosi se na dodavanje više strojeva u postojeći klaster. To znači da je ES sposoban prihvatiti više čvorova u svom klasteru i ne osigurati vrijeme prestanka rada za potrebne nadogradnje sustava. Pogledajte donju sliku da biste razumjeli koncepte skaliranja:
Okomito i vodoravno skaliranje
Početak rada s Elasticsearch bazom podataka
Da biste počeli koristiti Elasticsearch, mora biti instaliran na stroju. Da biste to učinili, pročitajte Instalacija ElasticSearch-a na Ubuntuu.
Provjerite imate li aktivnu instalaciju ElasticSearch ako želite isprobati primjere koje ćemo predstaviti kasnije u lekciji.
Elasticsearch: Koncepti i komponente
U ovom ćemo odjeljku vidjeti koje su komponente i koncepti u središtu Elasticsearch-a. Razumijevanje ovih koncepata važno je da bi se razumjelo kako ES funkcionira:
- Klastera: Klaster je zbirka poslužiteljskih strojeva (čvorova) koja sadrži podatke. Podaci su podijeljeni između više čvorova kako bi se mogli replicirati, a pojedinačna točka neuspjeha (SPoF) ne događa se na ES poslužitelju. Zadani naziv klastera je elastično pretraživanje. Svaki čvor u klasteru povezuje se s klasterom URL-om i imenom klastera, pa je važno da to ime ostane jasno i jasno.
- Čvor: Čvorni stroj je dio poslužitelja i naziva se jednim strojem. Pohranjuje podatke i pruža mogućnosti indeksiranja i pretraživanja, zajedno s ostalim čvorovima klastera.
Zbog koncepta vodoravnog skaliranja, u ES klaster možemo virtualno dodati beskonačan broj čvorova kako bismo mu dali puno više snage i mogućnosti indeksiranja.
- Indeks: Indeks je zbirka dokumenata s ponešto sličnim karakteristikama. Indeks je prilično sličan bazi podataka u okruženju temeljenom na SQL-u.
- Tip: Tip se koristi za razdvajanje podataka između istog indeksa. Na primjer, baza podataka / indeks kupaca može imati više vrsta, poput korisnika, tipa_plaćanja itd.
Imajte na umu da su tipovi zastarjeli od ES v6.0.0 nadalje. Ovdje pročitajte zašto je to učinjeno.
- Dokument: Dokument je najniža razina jedinice koja predstavlja podatke. Zamislite to kao JSON objekt koji sadrži vaše podatke. U indeksu je moguće indeksirati što više dokumenata.
Vrste pretraživanja u Elasticsearchu
Elasticsearch poznat je po svojim mogućnostima pretraživanja u gotovo stvarnom vremenu i fleksibilnostima koje pruža s vrstom podataka koji se indeksiraju i pretražuju. Počnimo proučavati upotrebu pretraživanja s raznim vrstama podataka.
- Strukturirano pretraživanje: Ova vrsta pretraživanja izvodi se na podacima koji imaju unaprijed definirani format poput datuma, vremena i brojeva. S unaprijed definiranim formatom dolazi fleksibilnost izvođenja uobičajenih operacija poput usporedbe vrijednosti u rasponu datuma. Zanimljivo, mogu se strukturirati i tekstualni podaci. To se može dogoditi kada polje ima fiksni broj vrijednosti. Na primjer, Naziv baze podataka može biti, MySQL, MongoDB, Elasticsearch, Neo4J itd. Uz strukturirano pretraživanje, odgovor na upite koje pokrećemo je da ili ne.
- Pretraživanje cijelog teksta: Ova vrsta pretraživanja ovisi o dva važna čimbenika, Relevantnost i Analiza. Pomoću Relevantnosti utvrđujemo koliko se neki podaci podudaraju s upitom tako što definiramo rezultat u rezultirajućim dokumentima. Ovu ocjenu daje sam ES. Analiza odnosi se na razbijanje teksta na normalizirane tokene da bi se stvorio obrnuti indeks.
- Višepoljno pretraživanje: Kako se broj analitičkih upita stalno povećava na pohranjenim podacima u ES-u, obično se ne susrećemo samo s upitima s jednostavnim podudaranjem. Porasli su zahtjevi za pokretanje upita koji se protežu u više polja i imaju razvrstani sortirani popis podataka koji nam vraća sama baza podataka. Na taj način podaci mogu biti krajnje korisniku na mnogo učinkovitiji način.
- Proimity Matching: Upiti danas puno su više od pukog prepoznavanja sadrže li neki tekstualni podaci drugi niz ili ne. Riječ je o uspostavljanju odnosa između podataka kako bi se oni mogli bodovati i podudarati s kontekstom u kojem se podaci podudaraju. Na primjer:
- Lopta je pogodila Johna
- John je pogodio Loptu
- John je kupio novu loptu koja je pogođena u Jaenov vrt
Upit za podudaranje pronaći će sva tri dokumenta kada se traži Udarac loptom. Neposredna pretraga može nam reći koliko se ove dvije riječi pojavljuju u istom retku ili odlomku zbog kojih su se podudarale.
- Djelomično podudaranje: Često moramo pokretati upite s djelomičnim podudaranjem. Djelomično podudaranje omogućuje nam pokretanje upita koji se djelomično podudaraju. Da bismo to vizualizirali, pogledajmo slične upite temeljene na SQL-u:
SQL upiti: djelomično podudaranje
GDJE naziv KAO "% john%"
I naziv KAO "% red%"
I naziv KAO "% garden%"U nekim prilikama trebamo pokrenuti samo upite s djelomičnim podudaranjem, čak i kad se mogu smatrati tehnikama grube sile.
Integracija s Kibanom
Što se tiče analitičkog mehanizma, obično moramo pokretati upite za analizu u domeni Business-Intelligence (BI). Kada su u pitanju poslovni analitičari ili analitičari podataka, ne bi bilo pošteno pretpostaviti da ljudi znaju programski jezik kada žele vizualizirati podatke prisutne u ES klasteru. Taj problem rješava Kibana. Kibana nudi toliko prednosti za BI da ljudi zapravo mogu vizualizirati podatke s izvrsnom, prilagodljivom nadzornom pločom i neaktivno vidjeti podatke. Pogledajmo ovdje neke od njegovih prednosti.
Interaktivne karte
U osnovi Kibane su interaktivne ljestvice poput ove:
Kibana dolazi podržan s raznim vrstama karata poput tortnih karata, sunčanica, histograma i još mnogo toga što koristi sve mogućnosti agregiranja ES.
Podrška za mapiranje
Kibana također podržava cjelovitu geo-agregaciju koja nam omogućuje da zemljopisno mapiramo svoje podatke. Nije li ovo cool?!
Unaprijed izgrađeni agregati i filtri
S unaprijed izgrađenim agregacijama i filtrima moguće je doslovno fragmentirati, ispustiti i pokrenuti visoko optimizirane upite na Kibana nadzornoj ploči. Uz samo nekoliko klikova moguće je pokrenuti objedinjene upite i prikazati rezultate u obliku interaktivnih karata.
Jednostavna distribucija nadzornih ploča
S Kibanom je također vrlo jednostavno dijeliti nadzorne ploče s mnogo širom publikom, bez ikakvih promjena na nadzornoj ploči uz pomoć načina samo na nadzornoj ploči. Nadzorne ploče možemo jednostavno umetnuti u našu internu wiki ili web stranicu.
Glavne slike snimljene sa stranice proizvoda Kibana.
Korištenje Elasticsearch
Da biste vidjeli detalje instance i informacije o klasteru, pokrenite sljedeću naredbu:
Sada možemo pokušati umetnuti neke podatke u ES pomoću sljedeće naredbe:
Umetanje podataka
kovrča \-X POST 'http: // localhost: 9200 / linuxhint / hello / 1' \
-H 'Vrsta sadržaja: application / json' \
-d '"name": "LinuxHint"' \
Evo što vraćamo ovom naredbom:
Pokušajmo sada dobiti podatke:
Dobivanje podataka
curl -X GET 'http: // localhost: 9200 / linuxhint / hello / 1'Kada pokrenemo ovu naredbu, dobit ćemo sljedeći izlaz:
Zaključak
U ovoj smo lekciji pogledali kako možemo početi koristiti ElasticSearch koji je izvrstan Analytics Engine i pruža izvrsnu podršku za pretraživanje slobodnog teksta u gotovo stvarnom vremenu.