elasticsearch Elasticsearch动态脚本已禁用
我正在尝试以下有关聚合的查询:
elasticsearch Elasticsearch动态脚本已禁用,
elasticsearch,
elasticsearch,我正在尝试以下有关聚合的查询: aggs:{ total:{ sum:{ script: "doc['comments'].value + doc['likes'].value + doc['shares'].value" } } } 它抛出以下异常: ScriptException[禁用动态脚本] 你知道我该怎么解决这个问题吗。参考: 默认情况下,elasticsearch中禁用了动态脚本,我们需要在elastic
aggs:{
total:{
sum:{
script: "doc['comments'].value + doc['likes'].value + doc['shares'].value"
}
}
}
它抛出以下异常:
ScriptException[禁用动态脚本]
你知道我该怎么解决这个问题吗。参考:
默认情况下,elasticsearch中禁用了动态脚本,我们需要在elasticsearch.yml文件中添加以下行:
script.disable\u动态:false
参考:
此外,我们还需要确保在启用动态脚本时,elasticsearch端口不是公共的。特别是节点用于通信的端口。(默认为9300)
否则,它存在安全漏洞,允许攻击者加入群集并进行端口扫描或进行DDOS攻击
更新
对于ES版本1.6+
通过需要添加到每个节点上的config/elasticsearch.yml文件中的以下设置,可以根据脚本源为每个脚本引擎启用脚本
script.inline: on
script.indexed: on
请参阅:该设置在elasticsearch 2.0中不再被识别。相反,请使用:
script.inline:on script.indexed:on
Im仍然无法运行函数\u分数查询,即使进行了这些更改,我始终会遇到以下错误:解析失败[元素[function\u分数]没有解析器]。有什么想法吗?也许吧。你能谈谈你的具体问题吗?如果你发布一个关于它的新问题并在评论中添加指向该问题的链接,效果会更好。我使用ElasticSearch 1.4.4:我添加了三行(script.disable\u dynamic:false
,script.inline:on
,script.indexed:on
),但它仍然不起作用。错误消息:类型为[inline]、操作[search]和lang[python]的脚本被禁用
。。。知道吗?@cherah30 ElasticSearch 1.4.4?我的想法是升级!对于Elasticsearch 2.x.x,请使用script.inline:on
script.indexed:on