Elasticsearch 动态脚本已禁用

标签 elasticsearch

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

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

并抛出以下异常:

ScriptException[禁用动态脚本]

知道我该如何解决这个问题。引用:

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

最佳答案

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

script.disable_dynamic: false

引用:http://www.elasticsearch.org/guide/en/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/en/elasticsearch/reference/current/modules-scripting.html#enable-dynamic-scripting

关于Elasticsearch 动态脚本已禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24711168/

相关文章:

elasticsearch - 为什么在Elasticsearch 0.90 more_like_this_field查询中不支持stop_words?

elasticsearch - 使用 sum 聚合的 Elasticsearch 查询中的问题

elasticsearch - 没有聚合的 Kibana 简单图

java - Elasticsearch-在java中创建节点/索引时出错

php - ElasticSearch:关联分数被function_score覆盖

elasticsearch - 为Elasticsearch 5.2中的所有索引创建默认索引模板

c# - Elasticsearch.net 客户端无法进行基本搜索

elasticsearch - 功能分数被忽略

bash - Brew 显示 elasticsearch 服务器正在运行,但对 elasticsearch 服务器的请求一直失败

java - 与Java 8并行流相比,Spring Batch的任何性能改进均可以处理大量数据