无法启动Elasticsearch服务

14

我正在尝试在Windows 2008 R2服务器上启动Elastic Search服务,但它无法启动。之前它已经运行了几个月而没有出现问题。

在服务中,我收到以下消息:

"Windows无法在本地计算机上启动Elasticsearch 1.7.2(ELASTIC_POC)服务。有关更多信息,请查看系统事件日志。如果这是非Microsoft服务,请联系服务供应商,并引用特定于服务的错误代码1。"

事件日志没有提供任何有用的信息,只显示以下错误:

"Elasticsearch 1.7.2(ELASTIC_POC)服务已进入停止状态。"

"Elasticsearch 1.7.2(ELASTIC_POC)服务以特定于服务的错误Incorrect function.终止。"

然而,在Elastic Search的日志文件中,我可以获得更多的信息:

[2016-03-30 10:47:22] [info]  [ 3988] Running 'ELASTIC_POC' Service...
[2016-03-30 10:47:22] [info]  [ 3760] Starting service...
[2016-03-30 10:47:22] [error] [ 3760] Failed creating java C:\Progra~2\Java\jre1.8.0_60\bin\client\jvm.dll
[2016-03-30 10:47:22] [error] [ 3760] The system cannot find the path specified.
[2016-03-30 10:47:22] [error] [ 3760] ServiceStart returned 1
[2016-03-30 10:47:22] [error] [ 3760] The system cannot find the path specified.
[2016-03-30 10:47:22] [info]  [ 3988] Run service finished.
[2016-03-30 10:47:22] [info]  [ 3988] Commons Daemon procrun finished

检查 C:\Program Files (x86)\Java\jre1.8.0_60,发现它只包含一个名为“lib”的空文件夹。有一个名为"jre1.8.0_73"的文件夹,其中有几个文件,包括 \bin\client\jvm.dll。

我应该如何让 Elastic Search 使用较新版本的 Java 或者恢复 jre1.8.0_60 文件夹的内容?我似乎找不到(安全可下载的)安装程序..

非常感谢任何帮助。


1
echo %JAVA_HOME% 的结果是什么? - Rob
C:\Progra~2\Java\jre1.8.0_73 尽管我在看到你的消息之前已经更新了环境设置,但我仍然遇到了相同的错误(我已经重新启动了服务器以确保)。 - mp3duck
你应该接受Brian Webster的答案作为正确答案。 - Tamb
5个回答

33

你的Java运行环境很有可能已经自动更新了。这会导致Elastic Search出现问题,因为你的环境变量JAVA_HOME现在指向了错误的位置。

首先,进入程序文件/Java文件夹,找到新的JRE文件夹。它可能是一个更高版本号。例如:不是jre1.8.0_73,可能是jre1.8.090或者一些更高的数字添加到末尾。

相应地更新你的JAVA_HOME环境变量。

然后,在适当备份Elastic Search文件后,在管理员命令提示符中,导航到Elastic Search bin文件夹。

输入以下命令:

 service remove
 service install

接下来,您可能希望进入services.msc并将服务从“手动启动”切换到“自动”或“自动延迟启动”。

有人可能认为在更新JAVA_HOME环境变量后重新安装服务是不必要的,但对于我的安装而言,这是必要的。


4
这恰恰是我的问题。谢谢。 - Jim G.
我无法使用PowerShell删除该服务,可以请您帮忙吗?@Brian - user3067170
@user3067170 你能试着右键点击cmd.exe并选择“以管理员身份运行”看看是否可以解决问题吗? - Brian Webster
1
@user3067170 我不会使用PowerShell,我会使用cmd.exe。你遇到了什么错误? - Brian Webster
如果您的JAVA_HOME设置为不受支持的版本,则无法启动。请参见-https://www.elastic.co/support/matrix#matrix_jvm - Kunal

5

通过重新安装服务解决问题。

在命令提示符中打开

{path-to-elastic-search}\bin\

并运行

service install

它不允许我运行

service remove,所以现在我有两个列出的 Elasticsearch 服务,但这是一个测试服务器,所以没关系。


4

对我来说,这是由于更新Java后我的注册表出现问题导致的。看起来旧版本的服务安装程序在注册表键中硬编码了Java路径,而它们应该依赖于JAVA_HOME环境变量。

在注册表中查找以下密钥:HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\elasticsearch-service-x64\Parameters\Java\Jvm。 如果它看起来像jvm.dll的硬编码路径,请将值更改为%JAVA_HOME%\bin\server\jvm.dll并尝试启动服务。


3

只需按照以下步骤逐步操作,您的Elasticsearch安装就会正常工作:

  • 高级系统设置 >> 环境变量 >> 系统变量 >> 路径 >> 新建,然后将最新的Java JDK路径插入其中。例如:C:\Program Files\Java\jdk-11.0.3\bin

2

对我来说,解决办法是创建目录\AppData\Local\Temp\elasticsearch。显然,Windows更新期间的某些原因删除了此文件夹。


是的,最近一次Win10更新把我搞糊涂了。我从来没有想到过这个问题。 - Jeremy L

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接