1.原因
出现如题所示的错误时,是因为Elasticsearch对JDK版本有要求。而我们可能习惯性的安装的是目前较为主流的1.7或1.8版本的JDK。所以与Elasticsearch的要求版本无法对应。先上一张对应图:
我目前使用的是Elasticsearch的7.7版本,所以对应需要用到OpenJDK11.
2.解决方法
①安装JDK11
wget https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz
下载完毕之后使用tar -zvxf openjdk-11.0.1_linux-x64_bin.tar.gz 解压出来
②使用vim es/bin/elasticsearch (路径用自己的) 添加如下配置:
#配置自己的jdk11
export JAVA_HOME=/opt/jdk-11.0.1
export PATH=$JAVA_HOME/bin:$PATH
#添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="/opt/jdk-11.0.1/bin/java"
else
JAVA=`which java`
fi
③再使用es/bin/elasticsearch -d 后台启动es。通过curl 'http://127.0.0.1:9200/?pretty'查看启动情况:
出现如上信息,就说明es已经正常启动了!
3.补充
启动es时,可能出现
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
警告信息,这是提醒你 cms 垃圾收集器在 jdk9 就开始被标注为 @deprecated
解决方式:将将 : -XX:+UseConcMarkSweepGC 改为:-XX:+UseG1GC
参考链接: