Actualizar documentos de índice en ES

La escritura del documento de ElasticSearch se escribe en una forma no modificable. Una vez que el registro del documento se escribe por sí solo, no se puede modificar. Sin embargo, en realidad, estos datos deben modificarse. ¿Qué hacemos? Cuando Dios te cierra una puerta, debe dejarte una ventana. Aunque no podemos modificar directamente el documento en sí, podemos modificar este registro actualizando un documento con el mismo _id y actualizando el número de versión. Podremos actualizar a través de tres gestos.

Ejecute las tres operaciones de colocación anteriores en secuencia y luego realice la consulta. Podemos ver que los resultados de la consulta correspondientes son:

Puede ver que después de cada colocación, el número de versión aumentará. por 1 dígito, los datos posteriores sobrescribirán los datos anteriores.

No quiero volver a ingresar todo el contenido del documento cada vez, pero quiero agregar, eliminar o modificar el documento según la versión anterior. ¿Qué debo hacer? ES nos proporciona la API de actualización.

ES proporciona una API de actualización que nos permite actualizar documentos con identificadores localmente. Podemos usar un script sencillo o configurar los parámetros del campo doc directamente en la actualización.

Considere el siguiente documento.

Si quiero cambiar mi edad, puedo usar dos métodos:

Ambos métodos pueden cambiar la edad a 14.

Quiero agregar un atributo "peso", ¿qué debo hacer?

Si queremos eliminar el campo "Género", en este caso sólo podremos utilizar un script indoloro.

Estas tres situaciones son las más básicas, y existen algunos otros usos. Consulte la documentación oficial actualizada.

https://www.elastic.co/guide/en/elastic search/reference/7.2/docs-update.html

Cabe señalar que la api de actualización solo puede ser utilizado El número de versión incorporado del índice ES. Si fuerza que se especifique un número de versión, la operación de actualización fallará.

Ambos métodos anteriores requieren especificar una identificación de documento. ES también proporciona API de actualización basada en búsqueda y API update_by_query.

La primera forma de utilizar la API update_by_query es utilizarla directamente sin especificar nada.

Me sentí particularmente confundido cuando vi este uso por primera vez, porque parecía no haber cambios excepto la actualización del número de versión. Más tarde, después de leer los documentos oficiales, entendí el significado de este uso.

Al establecer la configuración del índice, existe una propiedad dinámica. Si se establece en falso, si se encuentra un campo que no ha sido asignado previamente, no se indexará y no se podrá realizar búsquedas. Tenga en cuenta que no se puede buscar pero tampoco almacenar. Estos datos todavía están ahí. ¿Cómo indexar estos datos? Aquí es donde resulta útil update_by_query. Primero actualicemos la asignación para este índice y luego llamemos a la API update_by_query. El documento correspondiente se volverá a indexar una vez y los campos que antes no se podían buscar pasarán a ser buscables.

Al igual que la API de consulta, update_by_query también puede tener un bloque de consulta, que aparece como una condición para la actualización:

Las operaciones de actualización también se pueden realizar de forma indolora.

Al actualizar _ por _ consulta, también puede especificar una canalización y utilizar el procesador de la canalización para procesar el documento.

Hay algunos otros usos, puede consultar los documentos oficiales:

https://www co/guide/en/elastic search/reference/7.2/docs. -actualizar-por-consulta .html