Skip to content
Opdatering af dokumenter i Elasticsearcg ved hjælp af Painless scripting

Opdatering af dokumenter i Elastic ved hjælp af painless script

Du kan opdatere dockumenter i Elastic ved hjælp af  _update_by_query API’en og Painless scripting.

Her er trinene til at opdatere dokumenter ved hjælp af _update_by_query og Painless scripting:

Først skal du oprette en ny _update_by_query -anmodning med UpdateByQueryRequest -API’en i Elasticsearch. Du angive indekset, der indeholder dokumenterne, du vil opdatere, samt eventuelle yderligere parametre, der er nødvendige for din anmodning. Du kan f.eks. angive yderligere søge kritierer for kun at finde de dokumenter du vi opdatere.

Derefter skal du definere dit Painless-script. Scriptet vil angive de opdateringer, du vil foretage i dokumenterne. Dette kan omfatte opdatering af eksisterende felter, tilføjelse af nye felter eller fjernelse af eksisterende felter. Du kan også udføre mere komplekse handlinger, såsom at udføre matematiske beregninger eller arbejde med arrays.

Når du har defineret dit script, skal du integrere det i din _update_by_query-anmodning ved hjælp af metoden script(). Dette vil fortælle Elasticsearch, at du vil bruge Painless-scriptet til at opdatere dokumenterne.

Et eksempel på en _update_by_query -anmodning med Painless-script, der opdaterer alle dokumenterne i indekset “mit_index” med en alder over 30, kan se sådan ud:

POST /mit_index/_update_by_query
{
  "query": {
    "range": {
      "alder": {
        "gt": 30
      }
    }
  },
  "script": {
    "source": "ctx._source.alder += params.alder_diff",
    "params": {
      "age_diff": 5
    }
  }
}

Dette script vil finde alle dokumenter i “mit_index” med en alder over 30 ved hjælp af en range-forespørgsel og derefter tilføje 5 til deres eksisterende “alder” -felt ved hjælp af Painless-scriptet. Bemærk, at params.age_diff er en parameter, der er angivet i anmodningen, som gør det muligt at opdatere værdien dynamisk.

Back To Top