📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

版本: 7.7-7.15

简而言之,当Elasticsearch中的’script.disable_dynamic’设置为true时,会出现此错误。此设置出于安全原因阻止脚本查询的执行。要解决此问题,您可以将’script.disable_dynamic’设置为false,或使用沙盒脚本语言如Painless。但请注意,启用动态脚本可能会暴露安全漏洞。或者,您可以使用参数化脚本或存储的脚本来避免此错误。

日志上下文 #

日志"[script] queries cannot be executed when ‘“的类名是 ScriptQueryBuilder.java。 我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入上下文的人参考:

}  @Override
 protected Query doToQuery(SearchExecutionContext context) throws IOException {
 if (context.allowExpensiveQueries() == false) {
 throw new ElasticsearchException("[script] queries cannot be executed when '" +
 ALLOW_EXPENSIVE_QUERIES.getKey() + "' is set to false.");
 }
 FilterScript.Factory factory = context.compile(script; FilterScript.CONTEXT);
 SearchLookup lookup = context.lookup();
 FilterScript.LeafFactory filterScript = factory.newFactory(script.getParams; lookup);