我可以在ES 1.4.5上执行以下更新而不会出现问题:
curl -XPOST 'localhost:9200/shop/product/2259/_update' -d '{
"script" : "deleteField"
}'
所以脚本本身很好,ES发现它没问题。但如果我尝试通过PHP客户端做同样的事情,我得到:
ElasticsearchIllegalArgumentException[failed to execute script]; nested: ScriptException[dynamic scripting for [groovy] disabled]
PHP代码如下所示:
$updateParams = array();
$updateParams['index'] = 'shop';
$updateParams['type'] = 'product';
$updateParams['id'] = '2509';
$updateParams['body'] = array(
'script' => 'deleteField'
);
$es_client->update($updateParams);
PHP ES客户端中静态脚本的正确语法是什么?
N.B。我没有启用动态脚本,因为我在/ config / scripts
下使用静态脚本答案 0 :(得分:1)
找不到脚本文件时也会显示此错误。事实证明,PHP应用程序配置最近已更改,并且未连接到正确的ES实例。
答案 1 :(得分:0)
答案 2 :(得分:-1)
错误dynamic scripting for [groovy] disabled
暗示您的配置中禁用了脚本(这是自ES 1.4.3以来的默认设置)。
确保script.disable_dynamic: false
配置中有elasticsearch.yml
。