我正在尝试以下聚合查询:
aggs:{
total:{
sum:{
script: "doc['comments'].value + doc['likes'].value + doc['shares'].value"
}
}
}
并抛出以下异常:
ScriptException[禁用动态脚本]
知道我该如何解决这个问题。引用:
最佳答案
默认情况下,elasticsearch 中的动态脚本是禁用的,我们需要在 elasticsearch.yml 文件中添加以下行:
script.disable_dynamic: false
此外,我们还需要确保在启用动态脚本时,elasticsearch 端口不是公开的。特别是节点用于通信的端口。 (默认为 9300) 否则存在安全漏洞,允许攻击者加入集群进行端口扫描或DDOS攻击。
更新
对于 ES 版本 1.6+
通过需要添加到每个节点上的 config/elasticsearch.yml 文件中的以下设置,可以为每个脚本引擎启用基于源的脚本。
script.inline: on
script.indexed: on
关于Elasticsearch 动态脚本已禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24711168/