Elasticsearch Tutorial for nybegynnere

Elasticsearch Tutorial for nybegynnere
I denne leksjonen vil vi se hvordan vi kan bruke Elasticsearch og hva som er bruken. Vi vil se grundig på forskjellige terminologier som er involvert i det og begynner å jobbe med det også.

Elasticsearch -database

Elasticsearch er en av de mest populære NoSQL-databasene som brukes til å lagre og søke etter tekstbaserte data. Det er basert på Lucene -indekseringsteknologien og gir mulighet for henting i millisekunder basert på data som er indeksert.

Basert på elasticsearch nettsted, her er definisjonen:

Elasticsearch er en åpen kildekode distribuert, avslappet søk og analysemotor som er i stand til å løse et økende antall brukssaker.

Det var noen ord på høyt nivå om Elasticsearch. La oss forstå konseptene i detalj her.

  • Distribuert: Elasticsearch deler dataene den inneholder i flere noder og bruksområder Master-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, Delete etc. for å få tilgang til data.
  • Søk og analysemotor: ES støtter svært analytiske spørsmål for å kjøres i systemet som kan bestå av sammensatte spørsmål og flere typer, som strukturerte, ustrukturerte og geo -spørsmål.
  • Horisontalt skalerbar: Denne typen scailing refererer til å legge flere maskiner til en eksisterende klynge. Dette betyr at ES er i stand til å akseptere flere noder i klyngen og gi ingen nedetid for nødvendige oppgraderinger til systemet. Se på bildet nedenfor for å forstå skaleringskonseptene:
  • Vertikal og horisontal scailing

Komme i gang med Elasticsearch -databasen

For å begynne å bruke Elasticsearch, må den installeres på maskinen. For å gjøre dette, les install 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: konsepter og komponenter

I dette avsnittet vil vi se hvilke komponenter og konsepter 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 enkeltpunkt (SPOF) ikke skjer med ES -serveren. Standardnavn på klyngen er Elasticsearch. Hver node i en klynge kobles til klyngen med en URL og klyngenavnet, så det er viktig å holde dette navnet distinkt og klart.
  • Node: En nodemaskin er en del av en server og kalles en enkelt maskin. Den lagrer dataene og gir indekserings- og søkefunksjoner, sammen med andre noder til klyngen.

    På grunn av begrepet horisontal skalering, kan vi praktisk talt legge til et uendelig antall noder i en ES -klynge for å gi det mye mer styrke og indekseringsevner.

  • Indeks: En indeks er en samling av dokument med noe lignende egenskaper. En indeks er ganske mye lik 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, betaling_type osv.

    Merk at typer er utdatert fra ES V6.0.0 og utover. Les her hvorfor dette ble gjort.

  • Dokument: Et dokument er det laveste nivået av enheten som representerer data. Se for 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 nærmeste sanntids søkefunksjoner og fleksibiliteter den gir med hvilken type data som blir indeksert og søkte. 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 i å 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. For eksempel kan navn på databaser være, MySQL, MongoDB, Elasticsearch, Neo4j, etc. Med strukturert søk er svaret på spørsmålene vi kjører enten et 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 å dele teksten til normaliserte symboler for å lage en omvendt indeks.
  • Multifield Search: Med antall analytiske spørsmål som noen gang øker på lagrede data i ES, står vi vanligvis ikke bare overfor enkle match -spørsmål. Kravene har vokst til å kjøre spørsmål som spenner over flere felt og har en scoret sortert liste over data 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.
  • ProMimity Matching: Spørsmål 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 scoret og tilpasses konteksten som data blir matchet. For eksempel:
    • Ball slo John
    • John slo ballen
    • John kjøpte en ny ball som ble truffet Jaen Garden

    En match -spørring vil finne alle tre dokumentene når de er søkt etter Ball hit. Et nærhetssøk kan fortelle oss hvor langt disse to ordene vises i samme linje eller avsnitt på grunn av at de matchet.

  • Delvis matching: Det er ofte vi trenger å kjøre delvis-matchin-spørsmål. Delvis matching lar oss kjøre spørsmål som samsvarer delvis. For å visualisere dette, la oss se på et lignende SQL -baserte spørsmål:

    SQL -spørsmål: Delvis matching

    Hvor navn som "%John%"
    Og navn som "%rød%"
    Og navn som "%hage%"

    Ved noen anledninger trenger vi bare å kjøre delvise match-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 forretningsintelligens (BI) -domen. 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 er til stede i ES -klyngen. 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 inetraktivt. 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, solbrenner, histogrammer og mye mer som bruker de komplette aggregeringsmulighetene til ES.

Kartlegging av støtte

Kibana støtter også fullstendig geo-aggregering som lar oss geo-kartlegge dataene våre. Er ikke dette kult?!

Forhåndsbygde aggregeringer og filtre

Med forhåndsbygde aggregeringer og filtre er det mulig å bokstavelig talt fragne, slippe og løpe svært optimaliserte spørsmål i Kibana-dashbordet. Med bare noen få klikk er det mulig å kjøre aggregerte 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 i dashbordet ved hjelp av bare dashbord -modus. Vi kan enkelt sette inn dashbord i vår interne wiki eller websider.

Funksjonsbilder tatt skjema Kibana produktside.

Bruke Elasticsearch

For å se forekomstdetaljer og klyngeinformasjon, kjør følgende kommando:

Nå kan vi prøve å sette inn noen data i ES ved å bruke følgende kommando:

Sette inn data

krøll \
-X POST 'http: // localhost: 9200/linuxhint/hallo/1' \
-H 'innholdstype: applikasjon /json' \
-d '"name": "linuxhint"' \

Dette 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 utdata:

Konklusjon

I denne leksjonen så vi på hvordan vi kan begynne å bruke Elasticsearch, som også er en utmerket analysemotor og gir utmerket støtte for nær sanntids gratis-tekst-søk også.