在 Java 中执行 ElasticSearch 更新时如何确保现有值不被覆盖?

How can I make sure that an existing value is not overwritten when doing an ElasticSearch update in Java?

我在索引 myIndex 中有一个 ID 为 myId 的 ElasticSearch 条目。此条目包含字段 someExistingField.

现在我想更新这个条目。由于技术原因,更新请求不包含 someExistingField 数据。

我想确保在本次更新的范围内

目前我正在使用这个代码:

final Map<String, Object> esDocument = ...;

final UpdateRequest request = new UpdateRequest(myIndex, myId);
request.doc(esDocument, XContentType.JSON);

esClient.update(request, RequestOptions.DEFAULT);

我需要如何更改此代码才能使其不覆盖 request 中未指定的现有值?

这似乎有效:

final UpdateRequest request = new UpdateRequest(myIndex, myId);
...
request.fetchSource(new FetchSourceContext(true, 
  new String[]{"someExistingField"}, Strings.EMPTY_ARRAY));
...