一尘不染

Elasticsearch动态脚本已禁用

elasticsearch

我正在尝试对聚合执行以下查询:

aggs:{
    total:{
        sum:{
            script: "doc['comments'].value + doc['likes'].value + doc['shares'].value"
        }   
    }
}

并引发以下异常:

ScriptException[dynamic scripting disabled]

任何想法我该如何解决。参考:

http://www.elasticsearch.org/guide/zh-
CN/elasticsearch/reference/current/search-aggregations-metrics-sum-
aggregation.html


阅读 431

收藏
2020-06-22

共1个答案

一尘不染

默认情况下,elasticsearch中禁用动态脚本,我们需要在elasticsearch.yml文件中添加以下行:

script.disable_dynamic: false

请参阅:http :
//www.elasticsearch.org/guide/zh-CN/elasticsearch/reference/1.5/modules-
scripting.html#_enabling_dynamic_scripting

另外,我们需要确保在启用动态脚本时,elasticsearch端口未公开。特别是节点用于通信的端口。(默认为9300)否则它具有安全漏洞,并允许攻击者加入群集并进行端口扫描或进行DDOS攻击。

更新

对于ES版本1.6+

通过以下需要在每个节点上添加到config / elasticsearch.yml文件的设置,可以为每个脚本引擎启用基于脚本来源的脚本。

script.inline: on
script.indexed: on

请参阅:https : //www.elastic.co/guide/zh-
CN/elasticsearch/reference/current/modules-scripting.html#enable-dynamic-
scripting

2020-06-22