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

版本: 7.7-7.15

简而言之,当 script.disable_dynamic 设置为 true 时尝试执行"脚本评分"查询会出现此错误。此设置会禁用 Elasticsearch 中的动态脚本,而"脚本评分"查询需要使用动态脚本。要解决此问题,您可以将 script.disable_dynamic 设置为 false,或者改用静态脚本。但请注意,启用动态脚本可能会带来安全风险,因此建议尽可能使用静态脚本。

日志上下文 #

日志 “[script score] queries cannot be executed when ‘” 的类名是 ScriptScoreQueryBuilder.java。我们从 Elasticsearch 源代码中提取了以下内容,供那些需要深入理解上下文的用户参考:

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