En este módulo, aprenderemos cómo actualizar y eliminar datos en Elasticsearch. Estos son procesos fundamentales para mantener la integridad y la relevancia de los datos en tu índice. Vamos a cubrir los siguientes temas:

  1. Actualización de Documentos
  2. Eliminación de Documentos
  3. Actualización por Consulta
  4. Eliminación por Consulta

  1. Actualización de Documentos

Conceptos Clave

  • Documentos: La unidad básica de datos en Elasticsearch.
  • Índices: Colecciones de documentos.
  • ID del Documento: Identificador único para cada documento en un índice.

Ejemplo Práctico

Para actualizar un documento, utilizamos el método POST con la API de Elasticsearch. Supongamos que tenemos un índice llamado library y un documento con el ID 1.

Paso 1: Crear un Documento

POST /library/_doc/1
{
  "title": "Elasticsearch Basics",
  "author": "John Doe",
  "published_year": 2021
}

Paso 2: Actualizar el Documento

Para actualizar el documento, utilizamos la API de actualización:

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

Explicación

  • Método POST: Utilizado para enviar datos al servidor.
  • /library/_update/1: Ruta que especifica el índice (library), la acción (_update) y el ID del documento (1).
  • "doc": Contiene los campos que queremos actualizar.

Ejercicio Práctico

  1. Crea un índice llamado books y añade un documento con los siguientes datos:
    {
      "title": "Learning Elasticsearch",
      "author": "Alice Smith",
      "published_year": 2020
    }
    
  2. Actualiza el campo author a "Bob Smith".

Solución

POST /books/_doc/1
{
  "title": "Learning Elasticsearch",
  "author": "Alice Smith",
  "published_year": 2020
}

POST /books/_update/1
{
  "doc": {
    "author": "Bob Smith"
  }
}

  1. Eliminación de Documentos

Conceptos Clave

  • Eliminación Suave: Marcado de documentos como eliminados sin borrarlos físicamente.
  • Eliminación Física: Borrado completo de documentos del índice.

Ejemplo Práctico

Para eliminar un documento, utilizamos el método DELETE con la API de Elasticsearch.

Paso 1: Crear un Documento

POST /library/_doc/2
{
  "title": "Advanced Elasticsearch",
  "author": "Jane Doe",
  "published_year": 2022
}

Paso 2: Eliminar el Documento

Para eliminar el documento, utilizamos la API de eliminación:

DELETE /library/_doc/2

Explicación

  • Método DELETE: Utilizado para eliminar datos del servidor.
  • /library/_doc/2: Ruta que especifica el índice (library) y el ID del documento (2).

Ejercicio Práctico

  1. Crea un índice llamado articles y añade un documento con los siguientes datos:
    {
      "title": "Introduction to Elasticsearch",
      "author": "Charlie Brown",
      "published_year": 2019
    }
    
  2. Elimina el documento creado.

Solución

POST /articles/_doc/1
{
  "title": "Introduction to Elasticsearch",
  "author": "Charlie Brown",
  "published_year": 2019
}

DELETE /articles/_doc/1

  1. Actualización por Consulta

Conceptos Clave

  • Script: Código que se ejecuta para actualizar documentos que coinciden con una consulta.

Ejemplo Práctico

Para actualizar múltiples documentos que coinciden con una consulta, utilizamos la API de actualización por consulta.

Paso 1: Crear Documentos

POST /library/_doc/3
{
  "title": "Elasticsearch for Beginners",
  "author": "John Smith",
  "published_year": 2020
}

POST /library/_doc/4
{
  "title": "Mastering Elasticsearch",
  "author": "John Smith",
  "published_year": 2021
}

Paso 2: Actualizar Documentos por Consulta

Para actualizar todos los documentos donde el author es "John Smith":

POST /library/_update_by_query
{
  "script": {
    "source": "ctx._source.author = 'John Doe'"
  },
  "query": {
    "term": {
      "author": "John Smith"
    }
  }
}

Explicación

  • _update_by_query: Ruta para actualizar documentos por consulta.
  • "script": Contiene el código que se ejecutará para cada documento que coincida con la consulta.
  • "query": Define los criterios de selección de documentos.

Ejercicio Práctico

  1. Crea un índice llamado magazines y añade dos documentos con los siguientes datos:
    {
      "title": "Elasticsearch Monthly",
      "author": "Emily Clark",
      "published_year": 2021
    }
    {
      "title": "Elasticsearch Weekly",
      "author": "Emily Clark",
      "published_year": 2022
    }
    
  2. Actualiza el campo author a "Emma Clark" para todos los documentos donde el author es "Emily Clark".

Solución

POST /magazines/_doc/1
{
  "title": "Elasticsearch Monthly",
  "author": "Emily Clark",
  "published_year": 2021
}

POST /magazines/_doc/2
{
  "title": "Elasticsearch Weekly",
  "author": "Emily Clark",
  "published_year": 2022
}

POST /magazines/_update_by_query
{
  "script": {
    "source": "ctx._source.author = 'Emma Clark'"
  },
  "query": {
    "term": {
      "author": "Emily Clark"
    }
  }
}

  1. Eliminación por Consulta

Conceptos Clave

  • Eliminación Masiva: Borrado de múltiples documentos que coinciden con una consulta.

Ejemplo Práctico

Para eliminar múltiples documentos que coinciden con una consulta, utilizamos la API de eliminación por consulta.

Paso 1: Crear Documentos

POST /library/_doc/5
{
  "title": "Elasticsearch Essentials",
  "author": "Jane Smith",
  "published_year": 2019
}

POST /library/_doc/6
{
  "title": "Elasticsearch Deep Dive",
  "author": "Jane Smith",
  "published_year": 2020
}

Paso 2: Eliminar Documentos por Consulta

Para eliminar todos los documentos donde el author es "Jane Smith":

POST /library/_delete_by_query
{
  "query": {
    "term": {
      "author": "Jane Smith"
    }
  }
}

Explicación

  • _delete_by_query: Ruta para eliminar documentos por consulta.
  • "query": Define los criterios de selección de documentos.

Ejercicio Práctico

  1. Crea un índice llamado journals y añade dos documentos con los siguientes datos:
    {
      "title": "Elasticsearch Journal",
      "author": "David Johnson",
      "published_year": 2018
    }
    {
      "title": "Elasticsearch Insights",
      "author": "David Johnson",
      "published_year": 2019
    }
    
  2. Elimina todos los documentos donde el author es "David Johnson".

Solución

POST /journals/_doc/1
{
  "title": "Elasticsearch Journal",
  "author": "David Johnson",
  "published_year": 2018
}

POST /journals/_doc/2
{
  "title": "Elasticsearch Insights",
  "author": "David Johnson",
  "published_year": 2019
}

POST /journals/_delete_by_query
{
  "query": {
    "term": {
      "author": "David Johnson"
    }
  }
}

Conclusión

En esta sección, hemos aprendido cómo actualizar y eliminar datos en Elasticsearch. Estos son procesos esenciales para mantener la integridad y la relevancia de los datos en tus índices. Hemos cubierto:

  • Actualización de documentos individuales.
  • Eliminación de documentos individuales.
  • Actualización de documentos por consulta.
  • Eliminación de documentos por consulta.

Con estos conocimientos, estás preparado para gestionar eficazmente los datos en tus índices de Elasticsearch. En el próximo módulo, exploraremos el Elasticsearch Query DSL para realizar búsquedas avanzadas.

© Copyright 2024. Todos los derechos reservados