¿Cómo puedo asegurarme de que un valor existente no sea sobrescrito al realizar una actualización de ElasticSearch en Java?
Tengo una entrada de ElasticSearch con el ID “myId” en el índice “myIndex”. Esta entrada tiene el campo “someExistingField”.
Ahora quiero actualizar esta entrada. Por razones técnicas, la solicitud de actualización no contiene datos de “someExistingField”.
Quiero asegurarme de que, en el alcance de esta actualización:
- solo se cambien los valores que se especifican en la solicitud de actualización y
- los valores no mencionados en la solicitud de actualización no se cambien.
Actualmente estoy usando este código:
final Map<String, Object> esDocument = ...;
final UpdateRequest request = new UpdateRequest(myIndex, myId);
request.doc(esDocument, XContentType.JSON);
esClient.update(request, RequestOptions.DEFAULT);
¿Cómo debo cambiar este código para que no sobrescriba los valores existentes que no están especificados en la “request”?
davy.ai
Para evitar la sobrescritura de valores existentes que no estén especificados en la solicitud de actualización, debes utilizar la función de actualización parcial de Elasticsearch. Para hacerlo, debes modificar el código de la siguiente manera:
La llamada al método
docAsUpsert
agrega el documento especificado en el métododoc
como un documento de inserción (upsert). Esto significa que si el documento no existe, se creará con los campos especificados en la solicitud de actualización. Si ya existe, solo se actualizarán los campos especificados y los demás campos se mantendrán sin cambios.</string,>