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.
- 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
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.
- Eliminant Dades
2.1. Eliminació de Documents
Per eliminar un document específic, pots utilitzar l'API _delete
.
Exemple de Codi: Eliminació de Documents
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
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
- Crea un índex anomenat
library
i afegeix un document amb l'ID1
que contingui els campstitle
iauthor
. - Actualitza el camp
author
del document amb l'ID1
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
- Crea un índex anomenat
products
i afegeix diversos documents amb els campsname
icategory
. - 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.
Curs d'Elasticsearch
Mòdul 1: Introducció a Elasticsearch
- Què és Elasticsearch?
- Instal·lant Elasticsearch
- Conceptes Bàsics: Nodes, Clústers i Índexs
- Arquitectura d'Elasticsearch
Mòdul 2: Començant amb Elasticsearch
Mòdul 3: Tècniques Avançades de Cerca
Mòdul 4: Modelatge de Dades i Gestió d'Índexs
Mòdul 5: Rendiment i Escalabilitat
- Optimitzant el Rendiment de la Cerca
- Escalant Elasticsearch
- Monitorització i Manteniment
- Còpia de Seguretat i Restauració
Mòdul 6: Seguretat i Control d'Accés
- Assegurant Elasticsearch
- Autenticació i Autorització d'Usuaris
- Control d'Accés Basat en Rols
- Auditoria i Compliment
Mòdul 7: Integracions i Ecosistema
- Elasticsearch amb Logstash
- Elasticsearch amb Kibana
- Elasticsearch amb Beats
- Elasticsearch amb Altres Eines