Actualizar documentos de índice en ES
Ejecute las tres entregas anteriores en secuencia y luego realice la consulta. Podemos ver los resultados de la consulta correspondientes de la siguiente manera:
Puede ver que después de cada entrega, el número de versión aumentará en 1. dígito y los datos posteriores sobrescribirán los datos anteriores.
¿Qué debo hacer si no quiero volver a escribir el documento completo cada vez, sino que quiero agregar, eliminar o modificar el documento según la versión anterior?
ES nos proporciona una API de actualización.
La API de actualización proporcionada por ES nos permite actualizar localmente documentos con identificadores específicos.
La API de actualización proporcionada por ES nos permite realizar actualizaciones localizadas en documentos con identificaciones específicas. Podemos lograr esta funcionalidad utilizando scripts de accesibilidad o configurando directamente el parámetro del campo doc en la actualización.
Consulte la documentación a continuación.
Si quiero cambiar mi edad, hay dos formas:
Ambos métodos cambian la edad a 14 años.
¿Qué pasa si queremos añadir un atributo "peso"?
Si queremos eliminar el campo "Género", en este caso tenemos que utilizar un script sencillo.
Las tres situaciones anteriores son las más básicas, hay algunas otras situaciones, puedes consultarlas en el documento de actualización oficial.
https://www.elastic.co/guide/en/elasticsearch/reference/7.2/docs-update.html
Tenga en cuenta que usar la API de actualización solo puede usar ES indexes El número de versión incorporado. Si el número de versión se especifica a la fuerza, la operación de actualización fallará.
Ambos métodos anteriores requieren especificar el ID del documento, y 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 confundí cuando vi este uso por primera vez porque no parecía cambiar nada excepto el número de versión. No entendí el significado de este uso hasta que leí la documentación oficial.
Al configurar la configuración del índice, hay una propiedad dinámica que, si se establece en falso, no indexará ni buscará cuando se encuentre un campo que no se haya asignado previamente. Tenga en cuenta que, aunque no se pueden realizar búsquedas, los datos no se almacenan y aún existen. ¿Cómo hacer que estos datos sean indexables? En este momento, puede entrar en juego update_by_query. Primero actualizamos el mapeo del índice y luego llamamos 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 contener un bloque de consulta como condición para la actualización:
Lo mismo ocurre con el uso de la operación de actualización sencilla.
Al realizar update_by_query, también puede especificar una canalización y utilizar el procesador de la canalización para procesar el documento.
Para otros usos, consulte la documentación oficial:
https://www.elastic.co/guide/en/elasticsearch/reference/7.2/docs-update-by- consulta .html.