En aquest tema, aprendrem com actualitzar i eliminar dades a Elasticsearch. Aquestes operacions són fonamentals per mantenir la integritat i la precisió de les dades en el teu índex. Explorarem les diferents maneres d'actualitzar documents, així com les opcions per eliminar documents de manera segura i eficient.

  1. Actualitzant Dades

1.1. Actualització de Documents

Elasticsearch permet actualitzar documents de diverses maneres. La més comuna és utilitzar l'API _update, que permet modificar un document existent sense haver de reindexar-lo completament.

Exemple de Codi: Actualització de Documents

POST /index_name/_update/document_id
{
  "doc": {
    "field_to_update": "new_value"
  }
}

Explicació:

  • index_name: Nom de l'índex on es troba el document.
  • document_id: Identificador únic del document que es vol actualitzar.
  • doc: Objecte que conté els camps i els valors que es volen actualitzar.

1.2. Actualització Condicional

També pots actualitzar documents de manera condicional utilitzant scripts. Això és útil quan necessites fer actualitzacions basades en el valor actual d'un camp.

Exemple de Codi: Actualització Condicional

POST /index_name/_update/document_id
{
  "script": {
    "source": "ctx._source.field_to_update += params.increment",
    "params": {
      "increment": 1
    }
  }
}

Explicació:

  • script: Objecte que conté el codi del script.
  • source: Codi del script que s'executarà.
  • params: Paràmetres que es passaran al script.

1.3. Actualització Massiva

Per actualitzar múltiples documents alhora, pots utilitzar l'API _bulk. Aquesta API permet enviar múltiples operacions en una sola petició, millorant l'eficiència.

Exemple de Codi: Actualització Massiva

POST /_bulk
{ "update": { "_id": "1", "_index": "index_name" } }
{ "doc": { "field_to_update": "new_value1" } }
{ "update": { "_id": "2", "_index": "index_name" } }
{ "doc": { "field_to_update": "new_value2" } }

Explicació:

  • Cada operació d'actualització es defineix en dues línies: una per especificar el document i l'altra per definir els canvis.

  1. Eliminant Dades

2.1. Eliminació de Documents

Per eliminar un document específic, pots utilitzar l'API _delete.

Exemple de Codi: Eliminació de Documents

DELETE /index_name/_doc/document_id

Explicació:

  • index_name: Nom de l'índex on es troba el document.
  • document_id: Identificador únic del document que es vol eliminar.

2.2. Eliminació per Consulta

També pots eliminar documents que compleixin certs criteris utilitzant l'API _delete_by_query.

Exemple de Codi: Eliminació per Consulta

POST /index_name/_delete_by_query
{
  "query": {
    "match": {
      "field_to_match": "value_to_match"
    }
  }
}

Explicació:

  • query: Objecte que defineix la consulta per seleccionar els documents a eliminar.

2.3. Eliminació Massiva

Similar a l'actualització massiva, pots eliminar múltiples documents alhora utilitzant l'API _bulk.

Exemple de Codi: Eliminació Massiva

POST /_bulk
{ "delete": { "_id": "1", "_index": "index_name" } }
{ "delete": { "_id": "2", "_index": "index_name" } }

Explicació:

  • Cada operació d'eliminació es defineix en una sola línia per document.

Exercicis Pràctics

Exercici 1: Actualitzar un Document

  1. Crea un índex anomenat library i afegeix un document amb l'ID 1 que contingui els camps title i author.
  2. Actualitza el camp author del document amb l'ID 1 a un nou valor.

Solució:

PUT /library/_doc/1
{
  "title": "Elasticsearch Guide",
  "author": "John Doe"
}

POST /library/_update/1
{
  "doc": {
    "author": "Jane Doe"
  }
}

Exercici 2: Eliminar Documents per Consulta

  1. Crea un índex anomenat products i afegeix diversos documents amb els camps name i category.
  2. Elimina tots els documents que pertanyin a la categoria electronics.

Solució:

PUT /products/_doc/1
{
  "name": "Laptop",
  "category": "electronics"
}

PUT /products/_doc/2
{
  "name": "Book",
  "category": "books"
}

POST /products/_delete_by_query
{
  "query": {
    "match": {
      "category": "electronics"
    }
  }
}

Conclusió

En aquesta secció, hem après com actualitzar i eliminar dades a Elasticsearch utilitzant diverses tècniques i APIs. Aquestes operacions són essencials per mantenir les dades actualitzades i eliminar informació obsoleta o incorrecta. A la següent secció, explorarem l'Elasticsearch Query DSL per realitzar cerques més avançades.

© Copyright 2024. Tots els drets reservats