更新语法中的Elasticsearch静态脚本?

时间:2015-05-28 14:13:49

标签: php elasticsearch

我可以在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

下使用静态脚本

3 个答案:

答案 0 :(得分:1)

找不到脚本文件时也会显示此错误。事实证明,PHP应用程序配置最近已更改,并且未连接到正确的ES实例。

答案 1 :(得分:0)

答案 2 :(得分:-1)

错误dynamic scripting for [groovy] disabled暗示您的配置中禁用了脚本(这是自ES 1.4.3以来的默认设置)。

确保script.disable_dynamic: false配置中有elasticsearch.yml