Elasticsearch Autofullfør Guide

Opster Team

Siste Oppdatering: Mar 2021

Opster Team

Mars 2021

I tillegg til å lese denne guiden, anbefaler vi at du kjører Elasticsearch Helsesjekk. Det vil oppdage problemer og forbedre Elasticsearch ytelse ved å analysere dine shard størrelser, threadpools, minne, øyeblikksbilder, disk vannmerker og mer.Den Elasticsearch Check-Up er gratis og krever ingen installasjon.

i tillegg til å lese denne veiledningen, bør Du kjøre Opster ‘ S Search Log Analyzer hvis du vil forbedre søkeytelsen din I Elasticsearch.

Med Opster Analysator, kan du enkelt finne langsomme søk og forstå hva som førte til dem legge ekstra belastning på systemet. Du får tilpassede anbefalinger for hvordan du reduserer søkeforsinkelse og forbedrer søkeytelsen. Verktøyet er gratis og tar bare 2 minutter å kjøre.

Bakgrunn

i denne artikkelen vil vi dekke hvordan du unngår kritiske ytelsesfeil, hvorfor Elasticsearch – standardløsningen ikke kutter den, og viktige implementeringshensyn.
Alle moderne nettsteder har autofullfør-funksjoner (søk mens du skriver) i søkefeltet for å forbedre brukeropplevelsen (ingen ønsker å skrive hele søkeord…). Det er viktig at autofullfør være raskere enn standard søk, som hele poenget med autofullfør er å begynne å vise resultatene mens brukeren skriver. Hvis ventetiden er høy, vil det føre til en subpar brukeropplevelse.

Nedenfor er et autofullfør søkeeksempel På Det berømte spørsmålet Og svaret, Quora. Dette er et godt eksempel på autofullføring: når du søker etter elasticsearch auto, begynner følgende innlegg å vises i søkefeltet.

 dette bildet har et tomt alt-attributt; filnavnet er GtQyiRxpwyXg_NmYFLO5mSlG5Zwa-k6a-s2AIi-uP3EsEP8dRql8eR0CrfGZlN_PIcUMU9K-GDZ2WfEASrxgxGSXiE37pzwNNffIcjq-xlBA982DZe8TQJFzYaLl8WojdrdlVNjQ

Merk at i søkeresultatene er det spørsmål knyttet til auto-skalering, auto-tag og autofullfør funksjoner Elasticsearch. Brukere kan videre skrive inn noen flere tegn for å avgrense søkeresultatene.

Ulike tilnærminger for autofullfør I Elasticsearch / søk mens du skriver

det er flere måter å implementere autofullfør-funksjonen som stort sett faller inn i fire hovedkategorier:

  1. Indeks tid
  2. Spørring tid
  3. ferdigstillelse suggester
  4. søk-som-du-type database

1. Indeks tid

noen ganger kravene er bare prefiks ferdigstillelse eller infix ferdigstillelse i autofullfør. Det er ikke uvanlig å se autofullfør implementering ved hjelp av tilpassede analysatorer, som innebærer indeksering av tokens på en slik måte at den samsvarer med brukerens søkeord.
hvis vi fortsetter med vårt eksempel, ser vi på dokumenter som består av “elasticsearch autocomplete”, “elasticsearch auto-tag”, “elasticsearch auto scaling”og” elasticsearch automatically”. Standardanalysatoren vil ikke generere noen delvise tokens for “autofullfør”, “autoscaling” og “automatisk”, og søking “auto” vil ikke gi noen resultater.
for å overvinne problemet ovenfor, brukes edge ngram eller n-gram tokenizer til å indeksere tokens I Elasticsearch, som forklart i den offisielle ES doc og search time analyzer for å få autofullføringsresultatene.
ovennevnte tilnærming bruker Samsvarsspørringer, som er raske når de bruker en streng sammenligning( som bruker hashcode), og det er relativt mindre nøyaktige tokens i indeksen.

2. Spørringstid

Autofullføring kan oppnås ved å endre samsvarsspørringer til prefiksspørringer. Mens kampspørringer fungerer på token (indeksert) til token (search query tokens) match, prefiksspørringer (som navnet antyder) samsvarer med alle tokens som starter med søketokener, derfor er antall dokumenter (resultater) matchet høyt.

som forklart, prefiks spørring er ikke en eksakt token kamp, heller det er basert på tegn kamper i strengen som er svært kostbart og henter mange dokumenter. Elasticsearch bruker internt En b + tre slags datastruktur for å lagre sine tokens. Det er nyttig å forstå internals av datastrukturen som brukes av inverterte indekser og hvordan ulike typer spørringer påvirker ytelsen og resultatene.

3. Ferdigstillelse suggester

dette er nyttig hvis du gir forslag til søkeord som på e-handel og hotell søk nettsteder. Søkefeltet tilbyr spørringsforslag, i motsetning til forslagene som vises i de faktiske søkeresultatene, og etter å ha valgt et av forslagene fra completion suggester, gir det søkeresultatene.

som nevnt på den offisielle ES doc det er fortsatt i utvikling bruk og henter ikke søkeresultatene basert på søkeord som forklart i vårt eksempel.

Internt fungerer Det ved å indeksere tokens som brukerne vil foreslå og ikke basert på eksisterende dokumenter.

Kodeeksempler

1. Indeks tid

Indeks definisjon:

{ "settings": { "analysis": { "filter": { "autocomplete_filter": { "type": "edge_ngram", "min_gram": 1, "max_gram": 10 } }, "analyzer": { "autocomplete": { "type": "custom", "tokenizer": "standard", "filter": } } } }, "mappings": { "properties": { "title": { "type": "text", "analyzer": "autocomplete", "search_analyzer": "standard" :-> note search_analyzer } } }}

søk:

{ "query": { "match": { "movie_name": { "query": "avengers inf" } } }}

2. Spørring tid

Indeks definisjon:

{ "mappings": { "properties": { "movie_name": { "type": "text" } } }}

Søkeforespørsel:

{ "query": { "bool": { "should": } }}

4. Søk mens du skriver

Det er en nylig utgitt datatype (utgitt i 7.2) ment å lette autofullfør spørringer uten forkunnskaper om tilpasset analysator satt opp. Elasticsearch lagrer internt de ulike tokens (edge n-gram, shingles) av samme tekst, og kan derfor brukes til både prefiks og infix-ferdigstillelse. Det kan være praktisk hvis ikke kjent med de avanserte funksjonene I Elasticsearch, som er tilfelle med de tre andre tilnærmingene. Ikke mye konfigurasjon er nødvendig for å få det til å fungere med enkle bruksområder, og kodeeksempler og flere detaljer er tilgjengelige på offisielle ES-dokumenter.

Ytelsesvurdering

Nesten Alle de ovennevnte tilnærmingene fungerer fint på mindre datasett med lettere søkebelastninger, men Når du har en massiv indeks som får et høyt antall auto foreslår spørringer, ER SLA og ytelse av de ovennevnte spørringene avgjørende . Følgende punkter bør hjelpe deg i å velge den tilnærmingen som passer best for dine behov:

  • ngram eller edge ngram tokens øker indeksstørrelsen betydelig, og gir grensene for min og maks gram i henhold til applikasjon og kapasitet. Planlegging vil spare betydelige problemer i produksjonen.
  • Tillater tomme eller få tegn prefiks spørringer kan få opp alle dokumentene i en indeks og har potensial til å få ned en hel klynge. Det er alltid en bedre ide å gjøre prefiksspørring bare på nte sikt (på få felt) og begrense minimumstegnene i prefiksspørringer.
  • ES gitt” søk mens du skriver ” datatype tokenizes inndatateksten i ulike formater. Siden DET er EN ES-levert løsning som ikke kan adressere alle brukssaker, er det alltid en bedre ide å sjekke alle hjørnesaker som kreves for din bedrift. I tillegg, som nevnt det tokenizes felt i flere formater som kan øke Elasticsearch index butikkstørrelse.
  • Fullføring foreslår separat indeksering av forslagene, og en del av det er fortsatt i utviklingsmodus og adresserer ikke bruken av å hente søkeresultatene.
  • Indeks tid tilnærminger er rask som det er mindre overhead under spørringen tid, men de involverer mer grunt arbeid, som re-indeksering, kapasitetsplanlegging og økt disk kostnader. Query tid er lett å implementere, men søk er kostbare. Dette er veldig viktig å forstå, da de fleste brukerne må velge en av dem, og å forstå denne avveien kan hjelpe med mange feilsøkingsproblemer.

Diverse

I de fleste tilfeller vil ES-løsningene for autofullfør enten ikke adressere forretningsspesifikke krav eller ha ytelsespåvirkning på store systemer, da disse ikke er en-størrelse-passer-alle-løsninger. Mesteparten av tiden må brukerne justere for å få den optimaliserte løsningen (mer effektiv og feiltolerant), og det er ikke trivielt å håndtere Elasticsearch-ytelsesproblemer. Opster bidrar til å oppdage dem tidlig og gir støtte og nødvendige verktøy for å feilsøke og hindre dem effektivt.

for videre lesing, vennligst se gjennom :

  1. Opsters veiledning om økt søkeforsinkelse for å få litt innsikt og forbedre ytelsen.
  2. Opster ‘ s guide om hvordan du bruker søk slow logs om hvordan du raskt feilsøker slow search issues

Forbedre Elasticsearch-Ytelsen

Kjør Analysen

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.