ElasticSearch使用自带JDK配置

ElasticSearch 启动报错如下:
future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk1.8.0_161/jre] does not meet this requirement Exception in thread "main" java.lang.RuntimeException: starting java failed with [1] output:

在不想安装JDK11的情况下,可以使用ElasticSearch 内置的JDK
目录如下:

ES就很神奇:
elasticsearch默认启用时首先找系统安装的jdk,如果没有安装jkd的话就使用es自带的jdk。
如果系统没有安装jdk的话就不需要配置jdk,es会启用自带jdk。这样的话,就不需要管jdk设置了。
如果系统安装了jkd,反而存在jdk和elasticsearch版本不一致的问题,导致es无法启动。(ps:不知道为什么开发则不搞一下发现版本冲突时使用自己内置的JDK,从而减少不必要的麻烦)
在/usr/local/elasticsearch/bin目录下vim elasticsearch-env:大约39至50行定义了jdk的选择方法

********************** # now set the path to java if [ ! -z "$JAVA_HOME" ]; then JAVA="$JAVA_HOME/bin/java" JAVA_TYPE="JAVA_HOME" else if [ "$(uname -s)" = "Darwin" ]; then # macOS has a different structure JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java" else JAVA="$ES_HOME/jdk/bin/java" fi JAVA_TYPE="bundled jdk" fi *********************

JAVA_HOME指系统自己安装的jkd;ES_HOME指 elasticsearch自带的jdk。
使用elasticsearch自带的jdk
方法一
取消检查启用自行安装的java,参数为JAVA_HOME
修改为:删除判断即可

**************************** # now set the path to java if [ "$(uname -s)" = "Darwin" ]; then # macOS has a different structure JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java" else JAVA="$ES_HOME/jdk/bin/java" fi JAVA_TYPE="bundled jdk" ****************************

正常启动成功

方法二
指定启动时使用es自带的jdk,参数为ES_HOME
页首脚本代码行set -e -o pipefail下添加es自带的jdk位置:export JAVA_HOME =/usr/local/esl/elasticsearch-7.4.2/jdk。
/usr/local/esl/elasticsearch-7.4.2/jdk修改为自己的elasticsearch安装路径。

************************** #!/bin/bash set -e -o pipefail #使用es自带的jdk(开始) export JAVA_HOME =/usr/local/esl/elasticsearch-7.4.2/jdk CDPATH="" SCRIPT="$0" **************************

elasticsearch默认启用自带的jdk设置完成。
如果启动时还有jdk报错之类的问题,则有可能是es内存设置等原因了。

posted @ 2025-06-10 17:05  滴滴滴  阅读(524)  评论(0)    收藏  举报