我使用此脚本更新文档:
UpdateResponse response = client.prepareUpdate("index","type","id")
.setScript("ctx._source.activity_entry = new groovy.json.JsonSlurper().parseText(\" {\\\"last_activity_refresh_time\\\": 777 }\");"
,ScriptService.ScriptType.INLINE)
.get();
它有效。
我想使用params而不是在脚本中指定要更新的值,但如果我使用它:
Map<String, Object> params = new HashMap<>();
params.put("param", "{last_activity_refresh_time: 777 }");
UpdateResponse response = client.prepareUpdate("index","type","id")
.setScriptParams(params)
.setScript("ctx._source.activity_entry = param;", ScriptService.ScriptType.INLINE)
它返回给我这个错误:
Exception in thread "main" org.elasticsearch.index.mapper.StrictDynamicMappingException: mapping set to strict, dynamic introduction of [activity_entry] within [activity_entry] is not allowed
无论我在参数中放置什么价值,都是这样的:
params.put("param", "adfhskjfh");
我总是得到同样的错误,好像问题不是值,而是在它背后的机制中。
我使用弹性1.5.2。有关如何使其有效的任何提示吗?
谢谢, 安德烈
答案 0 :(得分:0)
我发现了什么错误,JasonSlurper缺少对param的调用:
int