7

我正在尝试将 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 的进程。它只有一个用于运行 elasticsearch 的命令提示符的 cmd 进程,当我终止该进程时,elasticsearch 也会被终止。

4

2 回答 2

5

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

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

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

于 2014-08-20T17:29:40.767 回答
4

如果您在 Windows 上将 Elasticsearch 安装为服务,您可以从“服务”控制面板启动/停止,有关启动/停止使用 CMD 等更多信息,请参见链接。

在此处输入图像描述


上面的方法既方便又正确。我尝试了其他一些方法来停止 ElasticSearch 并在这里记录,

在知道上面的方法之前,首先我猜测 ElasticSearch 可能是任务管理器中的一个进程,所以我通过名称找到并确实找到了一个进程名称ElasticSearch.exe,但是在我杀死那个进程之后,我仍然可以从中获取 ElasticSearch Infohttp://localhost:9200/哪个是 ElasticSearch 端口在我的电脑上,这意味着 ElasticSearch 仍在运行。

后来我想也许我可以通过 杀死它port,我找到了一篇使用 PowerShell 通过端口杀死进程的文章,所以我启动了一个 PowerShell,然后执行Stop-Process -Id (Get-NetTCPConnection -LocalPort 9200).OwningProcess -Force,它告诉我:

Stop-Process : 无法停止“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/,这意味着我成功停止了弹性搜索。

于 2018-07-04T04:34:19.573 回答