Elasticsearch从1.4.1升级到1.4.4后无法启动服务

Dom*_*icz 20 windows-7-x64 elasticsearch

我使用ELS 1.4.1在Windows 7版本x64上成功安装了Elasticsearch.升级到Kibana 4 RTM后,它需要ELS 1.4.4.

为了执行升级,我执行了以下步骤:

  1. 下载ELS 1.4.4
  2. 停止并删除了ELS 1.4.1服务
  3. 将当前安装目录重命名为elasticsearch_bak
  4. 将1.4.4 zip解压缩到elasticsearch目录
  5. 比较/config/elasticsearch.yml和config/logging.yml并应用更改(底部包含以下附加设置)
# Helps Chrome work properly
http.cors.allow-origin: "/.*/"
http.cors.enabled: true
Run Code Online (Sandbox Code Playgroud)

启动服务后,它会在几秒钟内停止.日志如下:

Java版本

(注意这是出于开发目的)

java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) Client VM (build 25.31-b07, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)

事件簿

The Elasticsearch 1.4.4 (elasticsearch) service terminated with service-specific error Incorrect function..
Run Code Online (Sandbox Code Playgroud)

elasticsearch-标准错误,2015.05.20.log

2015-02-20 08:49:13 Commons Daemon procrun stderr initialized
Exception in thread "main" ror: Could not initialize class org.elasticsearch.Version
    at org.elasticsearch.bootstrap.Bootstrap.buildErrorMessage(Bootstrap.java:254)
    at org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.java:238)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:32)
The data area passed to a system call is too small.

Failed to start service
Run Code Online (Sandbox Code Playgroud)

elasticsearch-标准输出,2015.05.20.log

2015-02-20 08:46:03 Commons Daemon procrun stdout initialized
Run Code Online (Sandbox Code Playgroud)

elasticsearch.2015-02-20.log

[2015-02-20 08:49:14] [info]  ( prunsrv.c:1284) [ 8560] Service started in 1198 ms.
[2015-02-20 08:49:14] [debug] ( prunsrv.c:844 ) [ 8560] reportServiceStatusE: 4, 0, 0, 0
[2015-02-20 08:49:14] [debug] ( prunsrv.c:1528) [ 8560] Waiting for worker to finish...
[2015-02-20 08:49:14] [debug] ( prunsrv.c:1533) [ 8560] Worker finished.
[2015-02-20 08:49:14] [debug] ( prunsrv.c:1559) [ 8560] Waiting for all threads to exit
[2015-02-20 08:49:14] [debug] ( prunsrv.c:844 ) [ 8560] reportServiceStatusE: 3, 0, 0, 0
[2015-02-20 08:49:14] [debug] ( prunsrv.c:1563) [ 8560] JVM destroyed.
[2015-02-20 08:49:14] [debug] ( prunsrv.c:844 ) [ 8560] reportServiceStatusE: 1, 1066, 0, 1
[2015-02-20 08:49:14] [info]  ( prunsrv.c:1598) [10064] Run service finished.
[2015-02-20 08:49:14] [info]  ( prunsrv.c:1764) [10064] Commons Daemon procrun finished
[2015-02-20 08:49:14] [info]  ( prunsrv.c:1764) [10064] Commons Daemon procrun finished
[2015-02-20 08:49:16] [error] ( prunsrv.c:746 ) [10116] Failed to start 'elasticsearch' service
[2015-02-20 08:49:16] [error] ( prunsrv.c:746 ) [10116] The data area passed to a system call is too small.
[2015-02-20 08:49:16] [info]  ( prunsrv.c:754 ) [10116] Start service finished.
[2015-02-20 08:49:16] [error] ( prunsrv.c:1755) [10116] Commons Daemon procrun failed with exit value: 5 (Failed to start service)
[2015-02-20 08:49:16] [error] ( prunsrv.c:1755) [10116] The data area passed to a system call is too small.
Run Code Online (Sandbox Code Playgroud)

如果我从命令提示符运行elasticsearch,我收到此错误:

c:\elk\elasticsearch\bin>elasticsearch
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org.elasticsearch.Version
        at org.elasticsearch.bootstrap.Bootstrap.buildErrorMessage(Bootstrap.java:254)
        at org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.java:238)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:32)
Run Code Online (Sandbox Code Playgroud)

Nik*_*tov 26

我有完全相同的问题,这是我如何解决它.

这是我的设置

我正在使用Windows Server 2008 R2 Enterprise- 64位版本.使用Java(JRE)版本,一切都运行良好1.8.0_25.弹性搜索已安装为Windows服务.

在问题发生之前,我将Java更新为版本1.8.0_31并重新启动了机器.

这是我采取的步骤的历史

首先,在重新启动机器后,我注意到ElasticSearch服务已停止.试图启动它后再次停止.

以下是我在事件日志中遇到的问题:

Elasticsearch 1.4.1(elasticsearch-service-x64)服务因服务特定错误终止错误功能..

这是我在我的elasticsearch-service-x64.2015-02-27.log:

[2015-02-27 14:38:29] [info]  [ 4948] Commons Daemon procrun (1.0.15.0 64-bit) started
[2015-02-27 14:38:29] [info]  [ 4948] Running 'elasticsearch-service-x64' Service...
[2015-02-27 14:38:29] [info]  [ 3048] Starting service...
[2015-02-27 14:38:29] [error] [ 3048] Failed creating java C:\Program Files\Java\jre1.8.0_25\bin\server\jvm.dll
[2015-02-27 14:38:29] [error] [ 3048] The system cannot find the path specified.
[2015-02-27 14:38:29] [error] [ 3048] ServiceStart returned 1
[2015-02-27 14:38:29] [error] [ 3048] The system cannot find the path specified.
[2015-02-27 14:38:29] [info]  [ 4948] Run service finished.
[2015-02-27 14:38:29] [info]  [ 4948] Commons Daemon procrun finished
Run Code Online (Sandbox Code Playgroud)

然后我将JAVA_HOME系统变量的值更改为C:\Program Files\Java\jre1.8.0_31

在此输入图像描述

那个问题是:

Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org.elasticsearch.Version
        at org.elasticsearch.bootstrap.Bootstrap.buildErrorMessage(Bootstrap.java:254)
        at org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.java:238)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:32)
Run Code Online (Sandbox Code Playgroud)

是什么解决了问题

  1. 我已经完全删除的文件夹bin,config,libplugins从ElasticSearch文件夹.

    请务必不要删除data目录,因为找到了索引!

  2. 从中解压缩相同的文件夹(bin,configlib)elasticsearch-1.4.4.zip.
  3. SC DELETE elasticsearch-service-x64在命令提示符管理员(删除已安装的服务)
  4. F:\Services\elasticsearch\bin>service.bat install

    Installing service      :  "elasticsearch-service-x64"
    Using JAVA_HOME (64-bit):  "C:\Program Files\Java\jre1.8.0_31"
    The service 'elasticsearch-service-x64' has been installed.
    
    Run Code Online (Sandbox Code Playgroud)
  5. 开始服务

然后一切都开始正常工作了.

在此输入图像描述

  • 长话短说:1)在弹性搜索bin目录下运行更新JAVA_HOME到新的java版本2:service remove; 服务安装; 服务开始 (9认同)
  • 没有必要迈出第一步,没有它,它对我有用. (4认同)

小智 18

我也有同样的问题.它在更新到Java的新版本后出现.虽然我将"JAVA_HOME"变量的值更改为新的java目录,但问题仍然存在.

我转到命令提示符,导航到ES目录并运行以下命令:

{ElasticSearch directory}\bin>service manager
Run Code Online (Sandbox Code Playgroud)

此命令将打开Elasticsearch属性窗口.(http://i.stack.imgur.com/QQEPG.png)

然后转到Java选项卡并将Java虚拟机的路径更改为新版本的Java.之后就运行ES服务

{ElasticSearch directory}\bin>service start
Run Code Online (Sandbox Code Playgroud)


emm*_*ppa 13

该问题是由service.bat与Elastic一起分发引起的,它依赖于Apache Common Procrun并使用%JAVA_HOME%未正确解析的环境变量设置JVM .

所以我通过在出现的GUI上设置"Default JVM"来解决问题service.bat manager.

通过命令行解决问题的另一种方法是

elasticsearch-service-x64.exe //US//YOUR_SERVICE_NAME --Jvm auto
Run Code Online (Sandbox Code Playgroud)

elasticsearch-service-x64.exe //US//elasticsearch-service-x64 --Jvm auto
Run Code Online (Sandbox Code Playgroud)