前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决Elasticsearch SQL命令行启动报错 ./x-pack-env: No such file or directory

解决Elasticsearch SQL命令行启动报错 ./x-pack-env: No such file or directory

原创
作者头像
ZNing
修改2020-07-20 10:19:59
1K0
修改2020-07-20 10:19:59
举报
文章被收录于专栏:ZNing·腾创库

今天在腾讯云服务器上,通过下载源码包完成有认证配置的Elasticsearch部署后,准备执行如下命令进入Elasticsearch SQL进行一些SQL语句的操作:

代码语言:txt
复制
bin/elasticsearch-sql-cli uri=http://elastic:ESabc+2333@10.66.66.2:9200/

但执行后,发现使用bin/elasticsearch-sql-cli登录时,出错提示./x-pack-env: No such file or directory,莫名其妙,遂即查看下该脚本,内容如下:

代码语言:txt
复制
#!/bin/bash

# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
# or more contributor license agreements. Licensed under the Elastic License;
# you may not use this file except in compliance with the Elastic License.

source "`dirname "$0"`"/elasticsearch-env

source "`dirname "$0"`"/x-pack-env

CLI_JAR=$(ls $ES_HOME/bin/elasticsearch-sql-cli-*.jar)

exec \
  "$JAVA" \
  -jar "$CLI_JAR" \
  "$@"

其中有效行第二行的<code>source "`dirname "$0"`"/x-pack-env</code>看来执行起来有问题,估计是在依赖导入生效时找不到路径。经过一番折腾,解决了该问题,即将该行替换为如下命令:

代码语言:txt
复制
# source "`dirname "$0"`"/x-pack-env
source /usr/share/elasticsearch/bin/x-pack-env

即将引入依赖的路径写死即可,使用时请根据实际路径修改x-pack-env的指向路径。

修改完后,再用刚才的命令启动Elasticsearch SQL,正常进入,完美结局。

后来又仔细查找了下资料,发现该问题是Elasticsearch 7.4版本的一个小bug,在Elasticsearch 7.8的包内,bin/elasticsearch-sql-cli这个脚本内容已经修改为:

代码语言:txt
复制
#!/bin/bash

# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
# or more contributor license agreements. Licensed under the Elastic License;
# you may not use this file except in compliance with the Elastic License.

source "`dirname "$0"`"/elasticsearch-env

source "$ES_HOME"/bin/x-pack-env

CLI_JAR=$(ls "$ES_HOME"/bin/elasticsearch-sql-cli-*.jar)

exec \
  "$JAVA" \
  "$XSHARE" \
  -jar "$CLI_JAR" \
  "$@"

也就是说,如果Elasticsearch 7.8安装时,操作系统环境变量内$ES_HOME能够正确设置的话,就可以正常启动Elasticsearch SQL了。这样比直接修改产品本身脚本来说要规范的多了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档