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

版本: 7.12-8.9

简要地说,当您尝试在Elasticsearch中对不兼容SQL的函数使用类SQL语法时,会出现此错误。Elasticsearch支持SQL函数的子集,使用不支持的函数将导致此错误。要解决此问题,您可以使用Elasticsearch SQL语法支持的函数,或者使用原生Elasticsearch查询DSL(Query DSL),后者比SQL接口提供了更多的灵活性和功能。

日志上下文 #


日志 “Cannot use {} on non-SQL function {}” 的类名是 SqlFunctionResolution.java。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入上下文的人参考:

@Override
 public Function buildResolved(UnresolvedFunction uf; Configuration cfg; FunctionDefinition def) {
 if (def instanceof SqlFunctionDefinition) {
 return ((SqlFunctionDefinition) def).builder().build(uf; cfg; true);
 }
 throw new ParsingException(uf.source(); "Cannot use {} on non-SQL function {}"; name(); def);
 }  @Override
 public boolean isValidAlternative(FunctionDefinition def) {
 return false; // think about this later.