项目中使用了elasticsearch-sql查询es数据,在执行sql查询的时候,后台报错:
java.lang.NoClassDefFoundError: com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlSQLColumnDefinition
at org.nlpcn.es4sql.query.ESActionFactory.toSqlExpr(ESActionFactory.java:135)
at org.nlpcn.es4sql.query.ESActionFactory.create(ESActionFactory.java:47)
at org.nlpcn.es4sql.SearchDao.explain(SearchDao.java:46)
错误的原因是是druid的版本不对。 elasticsearch-sql的版本是6.6.2.0,其中org.nlpcn.es4sql.parse.ElasticSqlExprParser.java这个类引用了druid包下面的MySqlSQLColumnDefinition.java类。elasticsearch-sql-6.6.2.0使用的druid包版本是1.0.15,而项目中的druid包是1.1.9,在druid-1.1.9下面没有MySqlSQLColumnDefinition.java类。
解决方法是:将druid的包替换成1.0.15版本。