在Windows中启动和停止elasticsearch节点

时间:2014-08-20 17:05:09

标签: windows elasticsearch command-prompt process-control

我正在尝试将elasticsearch作为一个进程启动并在不关闭命令提示符的情况下停止它。为了创建一个新流程,我正在使用:

C:\Users\User1\Desktop\Work\ElasticSearch\elasticsearch-1.3.1\bin>start /B elasticsearch
C:\Users\User1\Desktop\Work\ElasticSearch\elasticsearch-1.3.1\bin>start /B elasticsearch
C:\Users\User1\Desktop\Work\ElasticSearch\elasticsearch-1.3.1\bin>[2014-08-19 15:23:26,351][WARN ][bootstrap                ] jvm uses the c
lient vm, make sure to run `java` with the server vm for best performance by adding `-server` to the command line
[2014-08-19 15:23:26,433][INFO ][node                     ] [Batroc the Leaper] version[1.3.1], pid[5800], build[2de6dc5/2014-07-28T14:45:15
Z]

该流程在端口9200上运行。

如何使用此命令或类似于已打开的命令提示符或运行elasticsearch节点进程的现有命令提示符来获取进程PID或名称以使用taskkill终止此进程:

taskkill /PID <pid>

5800的Pid(在上面的控制台中显示在进程日志中)不起作用。 Windows任务管理器没有名为elasticsearch的进程。它只有一个cmd进程用于运行elasticsearch的命令提示符,当我终止该进程时,elasticsearch也会被杀死。

2 个答案:

答案 0 :(得分:4)

我将Elasticsearch安装并运行为Windows服务:

  

Windows用户可以将Elasticsearch配置为作为要运行的服务运行   在后台或在没有任何用户的情况下在启动时自动启动   相互作用。这可以通过service.bat脚本来实现   bin /文件夹,允许用户安装,删除,管理或配置   所有服务都可以启动和停止服务   命令行。

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-service-win.html

它允许您运行start和stop之类的命令来运行并终止来自脚本的elasticsearch,而无需跟踪进程ID或保持相同的命令提示符处于打开状态。

更新:

要在服务的同时运行Elasticsearch的多个实例,您需要在安装服务时传递一个唯一的serviceid:

  

脚本需要一个参数(要执行的命令),然后是   一个指示服务ID的可选项(在安装时很有用)   多个Elasticsearch服务)。

关于运行ES的端口和IP地址应该没有什么不同 - 但我要检查您的配置文件(elasticsearch.yml)和日志配置(logging.yml)。有关配置选项的更多详细信息:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-configuration.html

答案 1 :(得分:0)

如果您Installing Elasticsearch as a Service on Windows,则可以从“服务”控制面板中启动/停止,有关更多信息,例如启动/停止使用CMD,请参见链接。

enter image description here


以上方法方便且正确。我尝试了其他方法来停止ElasticSearch并在此处进行记录,

在了解上述方法之前,首先我猜ElasticSearch可能是任务管理器中的一个进程,所以我按名称找到并确实找到了一个进程名称ElasticSearch.exe,但是在杀死该进程之后,我仍然可以获得来自http://localhost:9200/的ElasticSearch Info,它是我计算机上的ElasticSearch端口,这意味着ElasticSearch仍在运行。

后来我想到也许可以用port杀死它,找到一篇using PowerShell to kill process by port,所以我启动了PowerShell,然后执行Stop-Process -Id (Get-NetTCPConnection -LocalPort 9200).OwningProcess -Force,它告诉我:

  

停止进程:无法停止“ java(22356)”进程,访问被拒绝。   + Stop-Process -Id(Get-NetTCPConnection -LocalPort 9200).OwningProcess ...   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~       + CategoryInfo:CloseError:(System.Diagnostics.Process(java):Process)[Stop-Process],ProcessCommandException

这可能是由于未以管理员身份运行引起的,但是从信息中我可以看出,运行ElasticSearch的实际进程是java.exe,其进程ID是22356,在使用任务管理器杀死java.exe之后,我无法连接到http://localhost:9200/,这意味着我成功停止了ElasticSearch。