由于ES 1.3.4存在安全漏洞,我们升级到ES 1.3.9,禁用动态groovy脚本,因此映射转换失败并显示错误消息" [groovy]的动态脚本已禁用&# 34 ;.我通过将脚本外部化到脚本文件来尝试https://www.elastic.co/guide/en/elasticsearch/reference/1.3/modules-scripting.html中的方法,但是没有调用脚本文件或转换不起作用。我们如何使用脚本文件实现转换
映射文件转换如下:
"transform" : [{
"script" : "ctx._source['downloadCountInt'] = (ctx._source['downloadCount']==null)? ctx._source['downloadCount'] : ctx._source['downloadCount'].replaceAll(/\\D/, '');",
"lang" : "groovy"
}]
尝试将脚本ctx._source['downloadCountInt'] = (ctx._source['downloadCount']==null)? ctx._source['downloadCount'] : ctx._source['downloadCount'].replaceAll(/\\D/, '');
放入名为" transform_download_count.groovy"的脚本文件中。在/etc/elasticsearch/scripts/transform_download_count.groovy中,日志消息显示它已正确编译但从未调用转换。
答案 0 :(得分:0)
使用脚本文件/etc/elasticsearch/scripts/transform_download_count.groovy
,尝试:
"transform" : {
"script_file" : "transform_download_count",
"lang" : "groovy"
}