您正在尝试的是弹性搜索的部分更新方法。我们需要使用脚本更新。
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200,"http")));
HashMap<String, String> hmExtra1 = new HashMap<String, String>();
hmExtra1.put("One", "9");
Map<String, HashMap<String, String>> data1 = new HashMap<>();
data1.put("case_extra",hmExtra1);
Map<String, Object> parameters = singletonMap("val", data1);
UpdateRequest request = new UpdateRequest("org-8", "Group", "CBCyJm4BWKXF8n_XGsze");
Script script = new Script(ScriptType.INLINE, "painless",
"ctx._source = params.val", parameters);
request.script(script);
UpdateResponse updateResponse = client.update(request);
现在文件将变成
{"_index":"org-8","_type":"Group","_id":"CBCyJm4BWKXF8n_XGsze","_version":5,"found":true,"_source":{"case_extra":{"One":"9"}}}
这是文件-
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high-document-update.html