Elasticsearch Database
Elasticsearch er en av de mest populære NoSQL-databasene som brukes til å lagre og søke etter tekstbaserte data. Den er basert på Lucene-indekseringsteknologi og tillater søkegjenfinning i millisekunder basert på data som er indeksert.
Basert på Elasticsearch-nettstedet, er her definisjonen:
Elasticsearch er en åpen kildekode distribuert, RESTful søke- og analysemotor som kan løse et økende antall brukssaker.
Dette var noen ord på høynivå om Elasticsearch. La oss forstå konseptene i detalj her.
- Distribuert: Elasticsearch deler dataene den inneholder i flere noder og bruksområder mester-slave algoritme internt
- Avslappende: Elasticsearch støtter databasespørsmål gjennom REST APIer. Dette betyr at vi kan bruke enkle HTTP-anrop og bruke HTTP-metoder som GET, POST, PUT, SLETT osv. for å få tilgang til data.
- Søk og Analytics-motor: ES støtter svært analytiske spørsmål som kan kjøres i systemet, som kan bestå av aggerte spørsmål og flere typer, som strukturerte, ustrukturerte og geografiske spørsmål.
- Horisontalt skalerbar: Denne typen scailing refererer til å legge til flere maskiner i en eksisterende klynge. Dette betyr at ES er i stand til å akseptere flere noder i klyngen og ikke gi nedetid for nødvendige oppgraderinger til systemet. Se på bildet nedenfor for å forstå skaleringskonseptene:
Vertikal og horisontal scailing
Komme i gang med Elasticsearch Database
For å begynne å bruke Elasticsearch, må den være installert på maskinen. For å gjøre dette, les Installer ElasticSearch på Ubuntu.
Forsikre deg om at du har en aktiv ElasticSearch-installasjon hvis du vil prøve eksempler vi presenterer senere i leksjonen.
Elasticsearch: Concepts & Components
I denne delen vil vi se hvilke komponenter og begreper som ligger i hjertet av Elasticsearch. Å forstå om disse konseptene er viktig for å forstå hvordan ES fungerer:
- Klynge: En klynge er en samling servermaskiner (noder) som inneholder dataene. Dataene er delt mellom flere noder slik at de kan replikeres og Single Point of Failure (SPoF) ikke skjer med ES-serveren. Standardnavnet på klyngen er elasticsearch. Hver node i en klynge kobles til klyngen med en URL og klyngenavnet, så det er viktig å holde dette navnet tydelig og klart.
- Node: En Node-maskin er en del av en server og betegnes som en enkelt maskin. Den lagrer dataene og gir indekserings- og søkefunksjoner, sammen med andre noder i klyngen.
På grunn av konseptet med horisontal skalering, kan vi praktisk talt legge til et uendelig antall noder i en ES-klynge for å gi den mye mer styrke og indekseringsfunksjoner.
- Indeks: En indeks er en samling dokumenter med noe lignende egenskaper. En indeks ligner ganske mye på en database i et SQL-basert miljø.
- Type: En type brukes til å skille data mellom samme indeks. For eksempel kan kundedatabase / indeks ha flere typer, som bruker, betalingstype osv.
Merk at typene er utfaset fra ES v6.0.0 og utover. Les her hvorfor dette ble gjort.
- Dokument: Et dokument er det laveste nivået av enhet som representerer data. Tenk deg det som et JSON-objekt som inneholder dataene dine. Det er mulig å indeksere så mange dokumenter i en indeks.
Typer søk i Elasticsearch
Elasticsearch er kjent for sine nesten sanntids søkemuligheter og fleksibiliteten den gir med typen data som blir indeksert og søkt. La oss begynne å studere hvordan du bruker søk med forskjellige typer data.
- Strukturert søk: Denne typen søk kjøres på data som har et forhåndsdefinert format som datoer, tider og tall. Med forhåndsdefinert format kommer fleksibiliteten til å kjøre vanlige operasjoner som å sammenligne verdier i en rekke datoer. Interessant, tekstdata kan også struktureres. Dette kan skje når et felt har et fast antall verdier. Navn på databaser kan for eksempel være, MySQL, MongoDB, Elasticsearch, Neo4J osv. Med strukturert søk er svaret på spørsmålene vi kjører enten ja eller nei.
- Fulltekstsøk: Denne typen søk er avhengig av to viktige faktorer, Relevans og Analyse. Med relevans bestemmer vi hvor godt noen data samsvarer med spørringen ved å definere en poengsum til de resulterende dokumentene. Denne poengsummen er gitt av ES selv. Analyse refererer til å bryte teksten i normaliserte tokens for å lage en invertert indeks.
- Multifield-søk: Med antallet analytiske spørsmål som stadig øker på de lagrede dataene i ES, møter vi vanligvis ikke bare enkle samsvarsspørsmål. Kravene har vokst til å kjøre spørringer som strekker seg over flere felt og har en sortert liste med data som er returnert til oss av selve databasen. På denne måten kan data være til stede for sluttbrukeren på en mye mer effektiv måte.
- Nærhetsmatching: Forespørsler i dag er mye mer enn bare å identifisere om noen tekstdata inneholder en annen streng eller ikke. Det handler om å etablere forholdet mellom data slik at det kan bli scoret og matches med den konteksten data blir matchet i. For eksempel:
- Ball traff John
- John slo ballen
- John kjøpte en ny ball som ble truffet i Jaen-hagen
Et treffspørsmål finner alle de tre dokumentene når det søkes etter Ball hit. Et nærhetssøk kan fortelle oss hvor langt disse to ordene vises i samme linje eller avsnitt som de samsvarer med.
- Delvis samsvar: Det er ofte vi trenger å kjøre delvis-matchende spørsmål. Partial Matching lar oss kjøre spørsmål som samsvarer delvis. For å visualisere dette, la oss se på lignende SQL-baserte spørsmål:
SQL-spørsmål: delvis samsvar
HVOR navnet LIKE "% john%"
OG gi navn LIKE "% red%"
OG navngi SOM "% garden%"Ved noen anledninger trenger vi bare å kjøre delvis samsvarende spørsmål selv når de kan betraktes som brute-force teknikker.
Integrasjon med Kibana
Når det gjelder en analysemotor, må vi vanligvis kjøre analysespørsmål i et Business-Intelligence (BI) -domene. Når det gjelder forretningsanalytikere eller dataanalytikere, ville det ikke være rettferdig å anta at folk kjenner et programmeringsspråk når de vil visualisere data som finnes i ES Cluster. Dette problemet løses av Kibana. Kibana tilbyr så mange fordeler for BI at folk faktisk kan visualisere data med et utmerket, tilpassbart dashbord og se data uoppmerksomt. La oss se på noen av fordelene her.
Interaktive diagrammer
Kjernen i Kibana er Interaktive diagrammer som disse:
Kibana kommer støttet med forskjellige typer diagrammer som kakediagrammer, sunbursts, histogrammer og mye mer som bruker de komplette aggregasjonsfunksjonene til ES.
Kartleggingsstøtte
Kibana støtter også komplett Geo-Aggregation som lar oss geografisk kartlegge dataene våre. Er ikke dette kult?!
Pre-built Aggregations and Filters
Med forhåndsbygde aggregasjoner og filtre er det mulig å bokstavelig talt frag, slippe og kjøre svært optimaliserte spørsmål i Kibana Dashboard. Med bare noen få klikk er det mulig å kjøre samlede spørsmål og presentere resultater i form av interaktive diagrammer.
Enkel distribusjon av dashbord
Med Kibana er det også veldig enkelt å dele dashbord til et mye bredere publikum uten å gjøre noen endringer på dashbordet ved hjelp av Dashboard Only-modus. Vi kan enkelt sette inn dashbord i vår interne wiki eller nettsider.
Vis bilder fra Kibana-produktsiden.
Bruke Elasticsearch
For å se forekomstdetaljene og klyngene, kjør følgende kommando:
Nå kan vi prøve å sette inn noen data i ES ved hjelp av følgende kommando:
Sette inn data
krølle \-X POST 'http: // localhost: 9200 / linuxhint / hallo / 1' \
-H 'Innholdstype: applikasjon / json' \
-d '"name": "LinuxHint"' \
Her er hva vi kommer tilbake med denne kommandoen:
La oss prøve å få dataene nå:
Få data
curl -X GET 'http: // localhost: 9200 / linuxhint / hallo / 1'Når vi kjører denne kommandoen, får vi følgende utgang:
Konklusjon
I denne leksjonen så vi på hvordan vi kan begynne å bruke ElasticSearch, som er en utmerket Analytics-motor og gir utmerket støtte for nesten sanntids fritekstssøk også.