没有脚本Elasticsearch的部分更新文档

时间:2015-06-28 16:23:30

标签: groovy elasticsearch

我使用以下代码进行部分更新

POST /website/blog/1/_update
{
   "script" : "ctx._source.views+=1"
}

有没有其他方法可以实现同样的目的。因为我不想改变任何东西 groovy脚本,因为上次我更改了设置,我的服务器遭到入侵。

如果没有解决方法,有人请帮助我解决方案或一些安全措施。

1 个答案:

答案 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对动态脚本使用“内联”),但这应该让您开始。