【发布时间】:2021-07-15 07:43:29
【问题描述】:
我的主要目的是通过 Java 高级 REST 客户端更新 ElasticSearch 中的现有文档。
对于这个任务,我使用UpdateByQueryRequest,并设置了一个修改相关文档的脚本。
我的问题是,我是否可以动态设置字段及其新值:
public Script buildUpdateQueryScript(Map<String,String> updatedValues) {
String script = "";
updatedFields.forEach((key,value) -> script.concat("ctx._source.").concat(key).concat(" = ").concat(value) );
return new Script(
ScriptType.INLINE,
"painless",
script,
Collections.emptyMap()
);
}
例如,如果我的Map 包含一个元素("keyOne","valueOne"),那么script 将如下:
"ctx._source.keyOne = valueOne"
这当然行不通,我想知道这是否可以动态构建脚本,如果可以,正确的方法是什么?
【问题讨论】:
标签: java elasticsearch resthighlevelclient