我试图在Windows 2008 R2服务器上启动Elastic Search服务,但它无法启动 . 它以前已经运行了几个月没有问题 .
在服务中,我收到消息:
"Windows could not start the Elasticsearch 1.7.2 (ELASTIC_POC) on Local Computer. For more information, review the System Event Log. If this is a non_Microsoft service, contact the service vendor, and refer to service specific error code 1."
事件日志非常无用,显示以下错误:
"The Elasticsearch 1.7.2 (ELASTIC_POC) service entered the stopped state."
"The Elasticsearch 1.7.2 (ELASTIC_POC) service terminated with service-specific error 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文件夹的内容?我似乎无法找到(安全下载)安装程序..
任何帮助非常感谢 .
3 回答
您的Java Runtime Environment很可能会自动更新 .
这将打破Elastic Search,因为您有一个名为JAVA_HOME的环境变量,现在指向错误的位置 .
首先,进入程序文件/ java并找到JRE的新文件夹 . 它可能是更晚的版本号 . 示例:代替jre1.8.0_73,可能是jre1.8.090或更高的数字加到最后 .
相应地更新您的JAVA_HOME环境变量 .
然后,在对弹性搜索文件进行适当备份后,在启用admin的命令提示符中,导航到弹性搜索bin文件夹 .
键入以下命令
然后,您可能想要进入services.msc并将服务从“手动启动”切换到“自动”或“自动延迟”
有人可能认为在更新JAVA_HOME环境变量之后重新安装服务是不必要的,但是我的安装是必要的 .
已解决,再次安装服务..
打开
{路径到弹性搜索} \ BIN \
在命令提示符下,
并运行
service install
它不允许我跑
服务删除,所以我现在如何列出两个弹性搜索服务,然而,这是一个测试服务器,所以这很好 .
对我来说,这是由更新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
并尝试启动该服务 .