ERROR: the system property [es.path.conf] must be set服务启动失败解决

ERROR: the system property [es.path.conf] must be set服务启动失败解决

前言

之前都是安装在liunx上的没什么问题,但是今天要把elasticsearch部署到一个windows服务器上,然后到官网下载了最新版的ES 7.9.1 上星期还是7.9.0…正常的 下载 解压 配置 双击elasticsearch.bat启动…成功没什么问题,这种方式把命令符窗口关闭就没了,要一直挂着,重启服务器又要重新打开,麻烦… 然后就把它注册成服务,那样就可以一直运行了,但是发现注册成服务之后无法启动服务,查看日志文件发现:ERROR: the system property [es.path.conf] must be set

在网上查了一下发现很少关于这个问题的文章,只有两篇还都是同一种方案(修改elasticsearch-env.bat文件使用es自带的jdk来启动),我试了一下还是不行。

后面到 elasticsearch的github上找终于找到了原因并成功解决,记录&分享一下过程

elasticsearch.bat正常启动

elasticsearch的windows安装就省略了正常的解压修改配置就好了,使用elasticsearch.bat文件启动:

没问题,可以正常访问(这里我的端口9200已经被占用了,所以是9201 & 9301 可以忽略)。

注册&启动服务

接下来进入正题:

  1. 注册elasticsearch服务 (注意红框的内容)

  2. 启动服务

    • 发现服务无法启动
      在这里插入图片描述

    • 查看log文件:

发现&查找错误

  1. 根据网上的解决方案修改elasticsearch-env.bat文件使用es自带的jdk启动

    1. 修改elasticsearch.bat文件
    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
    )
    修改为:
    set JAVA="%ES_HOME%\jdk\bin\java.exe"
    set JAVA_HOME="%ES_HOME%\jdk"
    set JAVA_TYPE=bundled jdk
    
    1. 以上步骤再来一遍(略…)
    2. 然后还是不行,查看日志发现还是一样的错误
  2. 因为版本是最新的所以我网上的解决方案很少,所以到elasticsearch的github上找,发现:

网址附上:https://github.com/elastic/elasticsearch/issues/56977

意思为:
我找到了错误所在。我们的JVM选项解析器应该发出一串由空格分隔的Java选项。批处理脚本期望单个空格,将其转换为分号,并将其输入到服务注册命令中。但是,选项解析器发出了一个双空格,我们将其转换为双分号,并且服务安装为此而阻塞,并丢弃了我们的大多数JVM选项,包括一些关键的选项。

我将着眼于修复JVM选项解析器的输出,并在可能的情况下使批处理脚本更健壮。

原因
“缺少”选项是仅在JDK 14和更高版本上插入的设置,因此,此问题仅应在JDK 13和更低版本上发生。这已添加在故障单#54853中。这只是Windows服务的问题;其他启动命令可以容忍多余的空格。

解决方法
原始问题中的解决方法并不理想,因为它仍然会丢弃许多JVM选项。更好的解决方法是在其中添加一行以elasticsearch-service.bat删除双分号。已经有一行将空格转换为分号:

if not “%ES_JAVA_OPTS%” == “” set ES_JAVA_OPTS=%ES_JAVA_OPTS: =;%
此后,立即插入:

if not “%ES_JAVA_OPTS%” == “” set ES_JAVA_OPTS=%ES_JAVA_OPTS:;;=;%

大白话:

修改bin目录下的elasticsearch-service.bat文件
将:
	if not "%ES_JAVA_OPTS%" == "" set ES_JAVA_OPTS=%ES_JAVA_OPTS: =;%
修改为:
	if not "%ES_JAVA_OPTS%" == "" set ES_JAVA_OPTS=%ES_JAVA_OPTS:;;=;%
  1. 完成再来一遍!

    发现它还是那个样子…同样的错误!

成功解决

我…抓一把头发,突然!我有个想法在脑海里飘过~

我试着结合之前的修改elasticsearch.bat文件

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
)
修改为:
set JAVA="%ES_HOME%\jdk\bin\java.exe"
set JAVA_HOME="%ES_HOME%\jdk"
set JAVA_TYPE=bundled jdk
  1. 注册服务(注意此时的红框内容)

在这里插入图片描述

  1. 启动服务,成功

  1. 浏览器访问,矛问题


注:liunx安装不必修改以上配置,因为这问题出现在windows中

最后成功解决 ^ _ ^

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页