我想将一组键值对从 HashMap 添加到 Elastic Search 的 Java 高级 REST 客户端 API 中的 UpdateRequest 函数的请求正文中。
我可以成功循环遍历 HashMap 并提取键和值。如何以干净有效的方式将这些添加到构建器中?这
更新:新日期(),动物:鳄鱼
code 是我想用来自 HashMap 的真实数据实现的占位符。
这是我在 Elastic Search 中使用的文档。我们使用的是 7.5.2 版本。
public void updateDocument(@PathParam("index_name") String index_name,
@PathParam("document_id") String document_id, HashMap<String, String> columnValues) throws IOException {
RestHighLevelClient client = createHighLevelRestClient();
Set<String> keys = columnValues.keySet();
for (String key : keys) {
System.out.println(key);
System.out.println(columnValues.get(key));
}
XContentBuilder builder = XContentFactory.jsonBuilder();
builder.startObject();
{
builder.timeField("updated", new Date());
builder.field("animal", "crocodile");
}
builder.endObject();
UpdateRequest request = new UpdateRequest(
index_name, document_id);
request.docAsUpsert(true).doc(builder);
UpdateResponse updateResponse = client.update(
request, RequestOptions.DEFAULT);
System.out.println(updateResponse);
client.close();