Elasticsearch-database
Elasticsearch er en af de mest populære NoSQL-databaser, der bruges til at gemme og søge efter tekstbaserede data. Det er baseret på Lucene-indekseringsteknologien og giver mulighed for søgning i millisekunder baseret på data, der er indekseret.
Baseret på Elasticsearch-webstedet er her definitionen:
Elasticsearch er en open source distribueret, RESTful søgemaskine og analysemaskine, der er i stand til at løse et stigende antal brugssager.
Det var nogle ord på højt niveau om Elasticsearch. Lad os forstå begreberne i detaljer her.
- Distribueret: Elasticsearch opdeler de data, den indeholder, i flere noder og anvendelser mester-slave intern algoritme
- Rolig: Elasticsearch understøtter databaseforespørgsler via REST API'er. Dette betyder, at vi kan bruge enkle HTTP-opkald og bruge HTTP-metoder som GET, POST, PUT, SLET osv. for at få adgang til data.
- Søgemaskine og Analytics-motor: ES understøtter meget analytiske forespørgsler til at køre i systemet, som kan bestå af aggreagerede forespørgsler og flere typer, som strukturerede, ustrukturerede og geo-forespørgsler.
- Vandret skalerbar: Denne form for scailing refererer til at tilføje flere maskiner til en eksisterende klynge. Dette betyder, at ES er i stand til at acceptere flere noder i sin klynge og ikke give nogen nedetid for krævede opgraderinger til systemet. Se på billedet nedenfor for at forstå skaleringskoncepterne:
Lodret og vandret scailing
Kom godt i gang med Elasticsearch Database
For at begynde at bruge Elasticsearch skal det være installeret på maskinen. For at gøre dette skal du læse Installer ElasticSearch på Ubuntu.
Sørg for, at du har en aktiv ElasticSearch-installation, hvis du vil prøve eksempler, vi præsenterer senere i lektionen.
Elasticsearch: Concepts & Components
I dette afsnit vil vi se, hvilke komponenter og begreber der ligger i hjertet af Elasticsearch. Det er vigtigt at forstå disse begreber for at forstå, hvordan ES fungerer:
- Klynge: En klynge er en samling af servermaskiner (noder), der indeholder dataene. Dataene er opdelt mellem flere noder, så de kan replikeres, og Single Point of Failure (SPoF) sker ikke med ES-serveren. Klyngens standardnavn er elastiksøgning. Hver knude i en klynge forbinder til klyngen med en URL og klyngenavnet, så det er vigtigt at holde dette navn tydeligt og klart.
- Node: En Node-maskine er en del af en server og betegnes som en enkelt maskine. Det gemmer dataene og giver indekserings- og søgefunktioner sammen med andre noder til klyngen.
På grund af begrebet vandret skalering kan vi stort set tilføje et uendeligt antal noder i en ES-klynge for at give det meget mere styrke og indekseringsfunktioner.
- Indeks: Et indeks er en samling dokumenter med noget lignende egenskaber. Et indeks ligner stort set en database i et SQL-baseret miljø.
- Type: En type bruges til at adskille data mellem det samme indeks. For eksempel kan kundedatabase / indeks have flere typer, som bruger, betalingstype osv.
Bemærk, at typer udfases fra ES v6.0.0 og fremefter. Læs her, hvorfor dette blev gjort.
- Dokument: Et dokument er det laveste niveau af enhed, der repræsenterer data. Forestil dig det som et JSON-objekt, der indeholder dine data. Det er muligt at indeksere så mange dokumenter i et indeks.
Typer af søgning i Elasticsearch
Elasticsearch er kendt for sine næsten realtids søgefunktioner og de fleksibiliteter, det giver med den type data, der indekseres og søges. Lad os begynde at studere, hvordan man bruger søgning med forskellige typer data.
- Struktureret søgning: Denne type søgning køres på data, der har et foruddefineret format som datoer, tidspunkter og tal. Med det foruddefinerede format kommer fleksibiliteten ved at køre almindelige operationer som at sammenligne værdier i en række datoer. Interessant, tekstdata kan også struktureres. Dette kan ske, når et felt har et fast antal værdier. For eksempel kan databasens navn være, MySQL, MongoDB, Elasticsearch, Neo4J osv. Med struktureret søgning er svaret på de forespørgsler, vi kører, enten ja eller nej.
- Fuldtekstsøgning: Denne type søgning afhænger af to vigtige faktorer, Relevans og Analyse. Med relevans bestemmer vi, hvor godt nogle data matcher forespørgslen ved at definere en score til de resulterende dokumenter. Denne score leveres af ES selv. Analyse henviser til at bryde teksten i normaliserede tokens for at oprette et inverteret indeks.
- Multifield-søgning: Med antallet af analytiske forespørgsler, der stadig øges på de lagrede data i ES, står vi normalt ikke kun over for enkle matchforespørgsler. Kravene er vokset til at køre forespørgsler, der spænder over flere felter og har en scoret sorteret liste med data, der returneres til os af selve databasen. På denne måde kan data være til stede for slutbrugeren på en meget mere effektiv måde.
- Nærhedstilpasning: Forespørgsler i dag er meget mere end bare at identificere, om nogle tekstdata indeholder en anden streng eller ej. Det handler om at etablere forholdet mellem data, så det kan scorer og matches med den kontekst, hvor data matches. For eksempel:
- Bold ramte John
- John slog bolden
- John købte en ny kugle, der blev ramt Jaen haven
En matchforespørgsel finder alle tre dokumenter, når de søges efter Bold hit. En nærhedssøgning kan fortælle os, hvor langt disse to ord vises i samme linje eller afsnit, som de matchede.
- Delvis matchning: Det er ofte, vi har brug for at køre forespørgsler om delvis matchning. Delvis matchning giver os mulighed for at køre forespørgsler, der matcher delvist. For at visualisere dette, lad os se på en lignende SQL-baseret forespørgsel:
SQL-forespørgsler: Delvis matchning
HVOR navn som "% john%"
OG navngiv LIGE "% rød%"
OG navngiv LIGE "% garden%"Ved nogle lejligheder har vi kun brug for at køre delvise matchforespørgsler, selv når de kan betragtes som brute-force-teknikker.
Integration med Kibana
Når det kommer til en analysemotor, er vi normalt nødt til at køre analyseforespørgsler i et Business-Intelligence (BI) domæne. Når det kommer til forretningsanalytikere eller dataanalytikere, ville det ikke være rimeligt at antage, at folk kender et programmeringssprog, når de vil visualisere data til stede i ES Cluster. Dette problem løses af Kibana. Kibana tilbyder så mange fordele for BI, at folk faktisk kan visualisere data med et fremragende, tilpassbart dashboard og se data uopmærksomt. Lad os se på nogle af fordelene her.
Interaktive kort
Kernen i Kibana er Interaktive diagrammer som disse:
Kibana leveres understøttet med forskellige typer diagrammer som cirkeldiagrammer, sunbursts, histogrammer og meget mere, som bruger ES's komplette aggregationsfunktioner.
Kortlægningssupport
Kibana understøtter også komplet Geo-Aggregation, som giver os mulighed for at geokort vores data. Er det ikke sejt?!
Forudbyggede samlinger og filtre
Med forudbyggede samlinger og filtre er det muligt at bogstaveligt talt frag, drop og køre stærkt optimerede forespørgsler i Kibana Dashboard. Med blot et par klik er det muligt at køre aggregerede forespørgsler og præsentere resultater i form af interaktive diagrammer.
Nem distribution af dashboards
Med Kibana er det også meget nemt at dele dashboards til et meget bredere publikum uden at foretage ændringer i dashboardet ved hjælp af Dashboard Only-tilstand. Vi kan nemt indsætte dashboards i vores interne wiki eller websider.
Feature-billeder taget fra Kibana-produktsiden.
Brug af Elasticsearch
Kør følgende kommando for at se instansoplysninger og klyngeoplysninger:
Nu kan vi prøve at indsætte nogle data i ES ved hjælp af følgende kommando:
Indsættelse af data
krølle \-X POST 'http: // localhost: 9200 / linuxhint / hej / 1' \
-H 'Indholdstype: applikation / json' \
-d '"name": "LinuxHint"' \
Her er hvad vi kommer tilbage med denne kommando:
Lad os prøve at få dataene nu:
Få data
krølle -X FÅ 'http: // localhost: 9200 / linuxhint / hej / 1'Når vi kører denne kommando, får vi følgende output:
Konklusion
I denne lektion kiggede vi på, hvordan vi kan begynde at bruge ElasticSearch, som er en fremragende Analytics Engine og giver fremragende support til næsten realtidssøgning i fri tekst også.