私信  •  关注

Garvit Khamesra

Garvit Khamesra 最近创建的主题
Garvit Khamesra 最近回复了
4 年前
回复了 Garvit Khamesra 创建的主题 » 如何使用Java中的ElasticSearch API更新(版本5)更新hashmap值?

您正在尝试的是弹性搜索的部分更新方法。我们需要使用脚本更新。

    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