Elasticsearch og systemer til fuldtekstsøgning · Lektion

Caching og samtidighed

Forstå Elasticsearchs cachingmekanismer, og lær at håndtere samtidighed for at behandle store mængder forespørgsler og forbedre svartiderne for queries.

Lektion 3 af 412 trin

Caching og samtidighed er en gratis Elasticsearch og systemer til fuldtekstsøgning-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Elasticsearch og systemer til fuldtekstsøgning, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Elasticsearch og systemer til fuldtekstsøgning-kurset indeholder 4 lektioner i alt.

Øg ydeevnen med caching

Velkommen til caching og samtidighed! I denne lektion undersøger vi, hvordan Elasticsearch bruger caching til at gøre søgninger hurtigere, og hvordan systemet håndterer mange forespørgsler på én gang.

Caching minder om at huske tidligere svar. Hvis du stiller det samme spørgsmål gentagne gange, er det hurtigere at huske svaret end at finde frem til det hver gang.

Hvorfor caching er afgørende

For søgemaskiner er ydeevne afgørende. Uden caching skulle Elasticsearch hver gang genlæse data fra disken og behandle dem igen, selv ved identiske forespørgsler.

Det fører til højere CPU-forbrug, flere I/O-handlinger og længere svartider. Caching reducerer disse behandlingsomkostninger betydeligt.

Node Query Cache

Elasticsearch bruger flere cacher. En vigtig af dem er Node Query Cache. Denne cache gemmer resultaterne af ofte anvendte filterforespørgsler.

Den fungerer på nodeniveau og er god til at gøre forespørgsler med almindelige filtre hurtigere, f.eks. "status": "active", uden at evaluere dem igen.

GET /my_index/_search
{
  "query": {
    "bool": {
      "filter": {
        "term": {
          "category.keyword": "electronics"
        }
      }
    }
  }
}

Sådan fungerer Node Query Cache

Node Query Cache gemmer de bitmængder, der angiver, hvilke dokumenter der matcher et filter. Når et filter bruges igen, kan Elasticsearch hurtigt hente denne bitmængde i stedet for at gennemgå alle dokumenter.

Den er optimeret til forespørgsler, der er små, køres ofte og ikke involverer komplekse sammenlægninger eller fuldtekstanalyse.

Request Cache

En anden vigtig cache er Request Cache. Denne cache gemmer hele JSON-svaret for en søgeforespørgsel for en bestemt shard.

Den er nyttig til forespørgsler, der er identiske, inklusive deres sammenlægninger, og som køres ofte. Den giver et betydeligt hastighedsboost ved at returnere det forhåndsberegnede svar.

GET /my_index/_search?request_cache=true
{
  "size": 0,
  "aggs": {
    "categories": {
      "terms": {
        "field": "category.keyword"
      }
    }
  }
}

Doc Values: Moderne feltdata

Historisk brugte Elasticsearch en 'Field Data Cache' til sortering og sammenlægninger på text-felter. Det kunne bruge meget hukommelse.

I dag bruger Elasticsearch som standard Doc Values til numeriske felter, booleske felter, datofelter, IP-felter og keyword-felter. Doc Values gemmes på disken kolonneorienteret, hvilket gør dem meget effektive til sammenlægninger og sortering uden stort hukommelsesforbrug.

PUT /products
{
  "mappings": {
    "properties": {
      "price": {
        "type": "float"
      },
      "status": {
        "type": "keyword"
      }
    }
  }
}

Ugyldiggørelse af cache

Cacher er gode, men de skal være opdaterede. Når du indekserer, opdaterer eller sletter et dokument i et indeks, ugyldiggør (rydder) Elasticsearch automatisk de relevante poster i cachen for den pågældende shard.

Det sikrer, at nye søgninger altid afspejler de nyeste data, så forældede resultater ikke bliver leveret.

Samtidighed: Håndtering af mange forespørgsler

Ud over caching skal Elasticsearch kunne håndtere mange brugere, der søger i og indekserer data samtidigt. Det kaldes samtidighed.

Elasticsearch opnår samtidighed ved at bruge flere tråde og trådpuljer, så systemet kan behandle flere handlinger på samme tid uden at vente på, at hver enkelt afsluttes sekventielt.

Elasticsearch-trådpuljer

Elasticsearch organiserer opgaver ved hjælp af forskellige trådpuljer. Hver pulje håndterer en bestemt type handling:

  • Søgepulje: Til udførelse af søgeforespørgsler.
  • Indekspulje: Til indeksering og opdatering af dokumenter.
  • Bulk-pulje: Til håndtering af bulk-indekseringsanmodninger.

Disse puljer forhindrer, at én langsom handling blokerer andre.

GET /_cat/thread_pool?v

Køer og afvisning

Når en trådpulje er optaget, placeres indgående anmodninger i en kø. Hvis køen bliver fuld, begynder Elasticsearch at afvise nye anmodninger af den pågældende handlingstype.

Afviste anmodninger resulterer i en fejl (f.eks. HTTP 429 Too Many Requests). Denne mekanisme er afgørende for at forhindre, at klyngen bliver overbelastet og ustabil.

Kontrol af cache og samtidighed

Test din forståelse af caching og samtidighed i Elasticsearch.

Opsummering: Caching og samtidighed

I denne lektion undersøgte vi, hvordan Elasticsearch optimerer ydeevnen gennem caching og samtidighed:

  • Caching: Node Query Cache og Request Cache gemmer resultater af forespørgsler for at undgå genberegning.
  • Dokumentværdier: En effektiv diskbaseret struktur til aggregater og sortering.
  • Samtidighed: Elasticsearch bruger trådpuljer til at håndtere mange samtidige anmodninger om søgning, indeksering og bulk-handlinger.
  • Køer: Anmodninger sættes i kø, når systemet er optaget, og afvisning fungerer som beskyttelse mod overbelastning.

Hvis du forstår disse mekanismer, kan du opbygge hurtigere og mere robuste søgeprogrammer!

Gratis at komme i gang

Lær Elasticsearch og systemer til fuldtekstsøgning med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Caching og samtidighed” gratis?

Ja — alle 3 lektioner i læringssporet Elasticsearch og systemer til fuldtekstsøgning, inklusive “Caching og samtidighed”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Elasticsearch og systemer til fuldtekstsøgning-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Caching og samtidighed”?

Forstå Elasticsearchs cachingmekanismer, og lær at håndtere samtidighed for at behandle store mængder forespørgsler og forbedre svartiderne for queries. Du øver dig i Elasticsearch og systemer til fuldtekstsøgning med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Elasticsearch og systemer til fuldtekstsøgning?

Der kræves ingen tidligere erfaring. Elasticsearch og systemer til fuldtekstsøgning på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Caching og samtidighed”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Elasticsearch og systemer til fuldtekstsøgning-lektion?

Ja. Alle Elasticsearch og systemer til fuldtekstsøgning-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Strategier til query-optimering
  2. Best practices for indekseringsydelse
  3. Caching og samtidighed
  4. Profilering og logge over langsomme forespørgsler
← Tilbage til Elasticsearch og systemer til fuldtekstsøgning