我使用以下代码进行部分更新
POST /website/blog/1/_update
{
"script" : "ctx._source.views+=1"
}
有没有其他方法可以实现同样的目的。因为我不想改变任何东西 groovy脚本,因为上次我更改了设置,我的服务器遭到入侵。
如果没有解决方法,有人请帮助我解决方案或一些安全措施。
答案 0 :(得分:2)
不,如果不使用脚本,则无法动态更改字段值。
You can use file-based scripts,这意味着您可以在安全,可信的方式使用脚本时禁用动态脚本(ES 1.4.3+中的默认值)。
config/
elasticsearch.yml
logging.yml
scripts/
your_custom_script.groovy
你可以拥有脚本商店:
ctx._source.views += your_param
存储后,您可以按名称访问脚本,从而绕过动态脚本。
POST /website/blog/1/_update
{
"script": "your_custom_script",
"params" : {
"your_param" : 1
}
}
根据Elasticsearch的版本,script
参数的名称更好(例如,ES 2.0对动态脚本使用“内联”),但这应该让您开始。