版本: 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);





