在使用elasticsearch-sql-cli的时候,用SQL查询ES数据时,抛出Bad request [current license is non-compliant for [sql]]
或者在使用JDBC连接elasticsearch时,抛出ElasticsearchSecurityException: current license is non-compliant for [security] 异常;
这个是由于X-Pack的许可证过期了。
这时候我们需要通过注册账号获得一个免费的许可证证书。
证书分为付费版和免费版,免费版会对节点数量有限制,但是一般的工作环境足够使用,因此我们采用BASIC授权文件。
1.注册elasticsearch账号,注册地址 https://register.elastic.co/
根据你填写的邮箱,会收到一封邮件,如下图
用命令切换到下载好的license.json文件目录下;
把许可证下载好上传到ES服务器,根据手册执行安装命令:curl -XPUT -u elastic "http://_xpack/license" -H “Content-Type: application/json” -d @ license.json
elastic是X-Pack内置的超级用户。默认密码是changeme。如果您还没有,请更改默认密码。具有群集管理员权限的任何用户都可以安装许可证
<host>是Elasticsearch节点的主机名(localhost如果在本地执行)
<port>是http端口(默认为9200)
license.json 是许可证JSON文件名称
执行后如果有上图类似的报错的话,看报错提示,需要http://_xpack/license改成http://_xpack/license/start_basic
再次执行后,还报错的话,如下图
报错提示,需要将PUT请求改成POST请求,再次修改后就能成功了
最后需要重启elasticsearch就可以了。
启动elasticsearch的bin目录下的elasticsearch-sql-cli
输入SQL语句:
使用sense查询:
成功返回查询结果。