Windows环境Elasticsearch7.6.1安装报错及解决过程
Elasticsearch是一个基于Lucene的搜索服务器。
第一次安装ES7.6.1,过程中遇到了一些报错,把解决方法列出来,总结一下。
jdk不匹配导致elasticsearch.bat启动报错
future versions of Elasticsearch will require Java 11; your Java version from [D:\developer_tools\jdk1.8.0_131\jre] does not meet this requirement
Warning: with JDK 8 on Windows, Elasticsearch may be unable to derive correct
ergonomic settings due to a JDK issue (JDK-8074459). Please use a newer
version of Java.
Warning: MaxDirectMemorySize may have been miscalculated due to JDK-8074459.
Please use a newer version of Java or set MaxDirectMemorySize explicitly.
这个报错的大概意思是安装elasticsearch的话,本地的JDK需要1.8以上,目前JDK版本为1.8,JDK版本太低了,需要升级到11。
所以有两个办法,一个是在本地在安装JDK11,另外一个是直接利用elasticsearch自带的JDK。
这里我们用第二种方法,在ES安装路径下找到这个文件,bin/elasticsearch-env.bat修改其中的JAVA_HOME。设置为Elasticsearch自带的jdk即可。
set JAVA_HOME=D:/ruanjian/elasticsearch-7.6.1/jdk
if defined JAVA_HOME (
set JAVA="%JAVA_HOME%\bin\java.exe"
set JAVA_TYPE=JAVA_HOME
) else (
set JAVA="%ES_HOME%\jdk\bin\java.exe"
set JAVA_HOME="%ES_HOME%\jdk"
set JAVA_TYPE=bundled jdk
)
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.报错
之后再运行elasticsearch.bat,又出现另外一个警告:
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
看下JDK11支持的垃圾回收器
[HotSpot Virtual Machine Garbage Collection Tuning Guide]
找到config路径下,找到jvm.options配置文件将以下内容(35行-38行左右)
## GC configuration
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
改为:
## GC configuration
-XX:+UseG1GC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
修改好以上配置,以为现在双击 elasticsearch.bat 就可以成功启动,结果出现闪退,都看不到错误信息,
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: Unable to access ‘path.data’ 错误解决
双击运行闪退看不到日志,于是转为在DOS命令窗口运行,直接运行elasticsearch 下的elasticsearch.bat,结果报错:
看到了错误信息:
[ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [LICHEN] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: Unable to access ‘path.data’ (D:\ruanjian\elasticsearch-7.6.1\data)
其实还是操作上的问题,经过查询,发现是因为不是root用户,在配置文件的时候。数据目录和日志目录等不能应该放在用户的目录下,防止因为该用户不能在所设置的目录下创建文件而引起报错。
所以,elasticsearch.bat右键 选择以管理员身份运行,成功启动。