Elasticsearch Komplettera automatiskt Guide

Opster Team

senaste ändring: Mar 2021

Opster Team

mars 2021

förutom att läsa den här guiden rekommenderar vi att du kör Elasticsearch Health Check-Up. Det kommer att upptäcka problem och förbättra din Elasticsearch prestanda genom att analysera dina skärva storlekar, threadpools, minne, ögonblicksbilder, disk vattenstämplar och mer.Elasticsearch-kontrollen är gratis och kräver ingen installation.

förutom att läsa den här guiden bör du köra Opsters Söklogganalysator om du vill förbättra din sökprestanda i Elasticsearch.

med Opsters analysator kan du enkelt hitta långsamma sökningar och förstå vad som ledde till att de lade till ytterligare belastning på ditt system. Du får anpassade rekommendationer för hur du kan minska sökfördröjningen och förbättra sökresultatet. Verktyget är gratis och tar bara 2 minuter att köra.

Bakgrund

i den här artikeln kommer vi att täcka hur man undviker kritiska prestandafel, varför Elasticsearch-standardlösningen inte skär den och viktiga implementeringshänsyn.
alla moderna webbplatser har autofullständiga funktioner (Sök när du skriver) i sökfältet för att förbättra användarupplevelsen (ingen vill skriva hela söktermer…). Det är absolut nödvändigt att autoslutförandet är snabbare än standardsökningen, eftersom hela poängen med autoslutförandet är att börja visa resultaten medan användaren skriver. Om latensen är hög kommer det att leda till en subpar användarupplevelse.

nedan är ett autofullständigt sökexempel på den berömda frågan och svaret, Quora. Detta är ett bra exempel på autofullständig: när du söker efter elasticsearch auto börjar följande inlägg visas i sökfältet.

 den här bilden har ett tomt alt-attribut; dess filnamn är GtQyiRxpwyXg_NmYFLO5mSlG5Zwa-k6a-s2AIi-uP3EsEP8dRql8eR0CrfGZlN_PIcUMU9K-GDZ2WfEASrxgxGSXiE37pzwNNffIcjq-xlBA982DZe8TQJFzYaLl8WojdrdlVNjQ

Observera att i sökresultaten finns det frågor som rör Auto-skalning, auto-tag och komplettera automatiskt funktioner i Elasticsearch. Användare kan ytterligare skriva några fler tecken för att förfina sökresultaten.

olika tillvägagångssätt för autofullständig i Elasticsearch / search när du skriver

det finns flera sätt att implementera autofullständig funktion som i stort sett faller i fyra huvudkategorier:

  1. Index tid
  2. Frågestund
  3. slutförande suggester
  4. sök-som-du-typ databas

1. Indextid

ibland är kraven bara prefixkomplettering eller infix-slutförande i autofullständig. Det är inte ovanligt att se autofullständig implementering med hjälp av anpassade analysatorer, vilket innebär indexering av tokens på ett sådant sätt att det matchar användarens sökterm.
om vi fortsätter med vårt exempel tittar vi på dokument som består av “elasticsearch autocomplete”, “elasticsearch auto-tag”, “elasticsearch auto scaling” och “elasticsearch automatically”. Standardanalysatorn genererar inga partiella tokens för” autocomplete”,” autoscaling “och” automatically”, och sökning av” auto ” skulle inte ge några resultat.
för att övervinna ovanstående problem används edge ngram eller n-gram tokenizer för att indexera tokens i Elasticsearch, vilket förklaras i den officiella ES doc och search time analyzer för att få autofullständiga resultat.
ovanstående tillvägagångssätt använder Matchningsfrågor, som är snabba eftersom de använder en strängjämförelse (som använder hashcode), och det finns jämförelsevis mindre exakta tokens i indexet.

2. Frågestund

Autofullständig kan uppnås genom att ändra matchningsfrågor till prefixfrågor. Medan matchningsfrågor fungerar på token (indexerad) till token (sökfråga tokens) matchar prefixfrågor (som namnet antyder) matchar alla tokens som börjar med söktoken, varför antalet dokument (resultat) som matchas är högt.

som förklarats är prefixfrågan inte en exakt tokenmatchning, utan den är baserad på teckenmatchningar i strängen som är mycket kostsamma och hämtar många dokument. Elasticsearch använder internt en B + träd typ av datastruktur för att lagra sina tokens. Det är användbart att förstå internalerna i datastrukturen som används av inverterade index och hur olika typer av frågor påverkar prestanda och resultat.

3. Slutförande suggester

detta är användbart om du ger förslag på söktermer som på e-handel och hotell Sök webbplatser. Sökfältet erbjuder frågeförslag, i motsats till de förslag som visas i de faktiska sökresultaten, och efter att ha valt ett av förslagen från completion suggester, ger det sökresultaten.

som nämnts på det officiella ES doc är det fortfarande under utveckling och hämtar inte sökresultaten baserat på söktermer som förklaras i vårt exempel.

internt fungerar det genom att indexera de tokens som användarna vill föreslå och inte baserat på befintliga dokument.

kodexempel

1. Index tid

Index definition:

{ "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ökfråga:

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

2. Frågestund

Indexdefinition:

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

sökfråga:

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

4. Sök när du skriver

det är en nyligen släppt datatyp (släppt i 7.2) som är avsedd att underlätta autofullständiga frågor utan förkunskaper om Anpassad analysator. Elasticsearch lagrar internt de olika tokens (edge n-gram, bältros) av samma text, och kan därför användas för både prefix och infix färdigställande. Det kan vara bekvämt om det inte är bekant med de avancerade funktionerna i Elasticsearch, vilket är fallet med de andra tre metoderna. Inte mycket konfiguration krävs för att få det att fungera med enkla användningsfall, och kodexempel och mer information finns på officiella ES-dokument.

prestanda övervägande

nästan alla ovanstående metoder fungerar bra på mindre datamängder med lättare sökbelastningar, men när du har ett massivt index som får ett stort antal auto föreslå frågor, är SLA och prestanda för ovanstående frågor viktigt . Följande punkter bör hjälpa dig att välja den metod som passar bäst för dina behov:

  • ngram eller edge ngram tokens ökar indexstorleken avsevärt, vilket ger gränserna för min och max gram enligt applikation och kapacitet. Planering skulle spara betydande problem i produktionen.
  • att tillåta tomma eller få teckenprefixfrågor kan ta upp alla dokument i ett index och har potential att få ner ett helt kluster. Det är alltid en bättre ide att göra prefixfråga endast på nth term (på få fält) och begränsa minsta tecken i prefixfrågor.
  • ES tillhandahålls” Sök när du skriver ” datatyp tokeniserar inmatningstexten i olika format. Eftersom det är en ES-tillhandahållen lösning som inte kan hantera alla användningsfall, är det alltid bättre att kontrollera alla hörnfall som krävs för ditt företagsanvändningsfall. Dessutom, som nämnts det tokenizes fält i flera format som kan öka Elasticsearch index butiksstorlek.
  • slutförande föreslår separat indexering av förslagen, och en del av det är fortfarande i utvecklingsläge och tar inte upp användningsfallet för att hämta sökresultaten.
  • Indextidsmetoder är snabba eftersom det finns mindre kostnader under frågestunden, men de innebär mer gruntarbete, som omindexering, kapacitetsplanering och ökad diskkostnad. Frågestund är lätt att implementera, men sökfrågor är kostsamma. Detta är mycket viktigt att förstå eftersom de flesta användare behöver välja en av dem och att förstå denna avvägning kan hjälpa till med många felsökningsproblem.

Diverse

i de flesta fall hanterar ES-lösningarna för autofullständig antingen inte affärsspecifika krav eller har prestandaeffekter på stora system, eftersom dessa inte är en-storlek-passar-alla lösningar. För det mesta måste användarna tweak för att få den optimerade lösningen (mer prestanda och feltolerant) och att hantera Elasticsearch-prestandaproblem är inte trivialt. Opster hjälper till att upptäcka dem tidigt och ger stöd och nödvändiga verktyg för att felsöka och förhindra dem effektivt.

för vidare läsning vänligen granska :

  1. Opsters guide om ökad sökfördröjning för att få lite insikter och förbättra prestanda.
  2. Opsters guide om hur man använder Sök långsamma loggar på hur man snabbt felsöker långsamma sökproblem

förbättra Elasticsearch prestanda

kör analysen

Lämna ett svar

Din e-postadress kommer inte publiceras.