如何使用多个 JAVA JDK 启动 Elasticsearch 服务

How to start Elasticsearch service with multiple JAVA JDKs

在我们的服务器上,我们使用了多个 Java JDK。我无法更改它,因为我们有旧 Java 版本的依赖项。 因此我无法启动当前的 elasticsearch 版本 (1.5.2),因为它需要 JDK > 1.7.0_55,尽管我们有其他版本,包括 1.7.0_79 , 安装。 旧版本的可执行文件存储在 /bin 下,而新版本的可执行文件安装到 /usr/jdk1.x.x_xx/bin。 我没有在 /etc/elasticsearch/elasticsearch.yml 中找到任何选项来设置 java 可执行文件的路径。 我还尝试将环境变量 $PATH 和 $JAVA_HOME 设置为较新的版本,但没有任何运气。 有没有办法强制 elasticsearch 使用新版本而不是旧版本?

转到用于启动 elasticsearch 的 elasticsearch bash 脚本。

如果您使用 RPM 安装,它位于:

/usr/share/elasticsearch/bin/elasticsearch

然后搜索函数launch_service() 在函数的第一行添加以下行:

JAVA=/usr/java/jdk1.8.0_25/bin/java

然后:

service elasticsearch restart

它将选择您在添加的行中设置的 java 版本。

更新 sysconfig 是更好的方法,因此任何脚本都不会选择另一个 JDK。 就我而言,当我在 /etc/sysconfig/elasticsearch 中更新 elasticsearch 配置时它起作用了 这与 https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html

中的建议差不多