如何在Elasticsearch启动时指定使用Java 8而非默认Java 9?
如何让Elasticsearch单独使用Java 8(系统默认Java 9)
完全可以实现!不用修改系统全局的Java默认配置,直接给Elasticsearch单独指定Java 8的安装路径就行,下面是几种实用的实现方式:
方法一:修改Elasticsearch的环境配置脚本
这是最常用的持久化方法,修改后每次启动都会自动用Java 8:
- 找到你的Elasticsearch安装目录,进入
bin文件夹,打开elasticsearch-env脚本文件 - 在脚本开头(或者原本处理
JAVA_HOME变量的逻辑之前)添加一行:
注意把路径替换成你自己机器上Java 8的实际安装路径export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 - 保存文件后,重启Elasticsearch,它就会使用指定的Java 8运行了
方法二:临时启动时指定Java版本
如果只是临时测试,不想修改配置文件,可以直接在启动命令前指定环境变量:
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ./bin/elasticsearch
同样替换成你的Java 8路径,执行这条命令启动的Elasticsearch就会用Java 8,不影响系统默认的Java 9
方法三:通过systemd服务配置指定(适用于用systemd管理的Elasticsearch)
如果你的Elasticsearch是作为systemd服务运行的,修改服务配置即可:
- 找到Elasticsearch的systemd服务文件,一般路径是
/etc/systemd/system/elasticsearch.service或者/lib/systemd/system/elasticsearch.service - 打开文件后,在
[Service]段落中添加一行:Environment="JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" - 保存后执行以下命令重新加载配置并重启服务:
systemctl daemon-reload systemctl restart elasticsearch
验证是否生效
启动Elasticsearch后,你可以通过以下方式确认它用的是Java 8:
- 查看Elasticsearch的日志文件(一般在
logs目录下),里面会输出JVM版本信息 - 调用Elasticsearch的节点信息API:
curl http://localhost:9200/_nodes/jvm,返回的结果里能看到JVM的版本号
内容的提问来源于stack exchange,提问作者deadcode




