目录

启动Elasticsearch

压缩包(.tar .gz)

从命令行启动

作为守护进程运行

压缩包(.zip)

用命令行运行

Debian packages

通过SysV init 运行Elasticsearch

通过systemd运行Elasticsearch

Docker图像

MSI packages

用命令行运行

RPM包

通过SysV init 运行Elasticsearch

通过systemd运行Elasticsearch

停止Elasticsearch

出现致命错误时停止


启动Elasticsearch

启动Elasticsearch的方法因安装方式而异。

压缩包(.tar .gz)

如果使用.tar.gz包安装了Elasticsearch,则可以从命令行启动Elasticsearch。

从命令行启动

Elasticsearch可以从命令行启动,如下所示:

./bin/elasticsearch

如果我们对Elasticsearch密钥库进行了密码保护,系统将提示我们输入密钥库的密码。

默认情况下,Elasticsearch在前台运行,将其日志打印到标准输出(stdout),并且可以通过按Ctrl-C停止。

作为守护进程运行

要作为守护进程运行Elasticsearch,请在命令行中指定-d,并使用-p选项在文件中记录进程ID:

./bin/elasticsearch -d -p pid

如果我们对Elasticsearch密钥库进行了密码保护,系统将提示我们输入密钥库的密码。有关详细信息,请参阅安全设置

日志消息可以在$ES_HOME/logs/目录中找到。

要关闭Elasticsearch,请终止pid文件中记录的进程ID:

pkill -F pid

Elasticsearch.tar.gz包不包括systemd模块。要将Elasticsearch作为服务进行管理,请改用Debian或RPM包。

压缩包(.zip)

如果在Windows上安装了带有.zip包的Elasticsearch,则可以从命令行启动Elasticsearch。如果希望Elasticsearch在引导时自动启动,而无需任何用户交互,请将Elasticsearch安装为服务。

用命令行运行

Elasticsearch可以从命令行启动,如下所示:

.\bin\elasticsearch.bat

Debian packages

安装后Elasticsearch不会自动启动。如何启动和停止Elasticsearch取决于我们的系统是使用SysV init还是systemd(由较新的发行版使用)。我们可以通过运行以下命令来判断正在使用哪个命令:

ps -p 1

通过SysV init 运行Elasticsearch

使用update-rc.d  命令将Elasticsearch配置为在系统启动时自动启动:

sudo update-rc.d elasticsearch defaults 95 10

可以使用服务命令启动和停止Elasticsearch:

sudo -i service elasticsearch start
sudo -i service elasticsearch stop

如果Elasticsearch由于任何原因无法启动,它会将失败原因打印到STDOUT.Log文件可以在/var/Log/elasticsearch/中找到。

通过systemd运行Elasticsearch

要将Elasticsearch配置为在系统启动时自动启动,请运行以下命令:

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service

Elasticsearch可以按如下方式启动和停止:

sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service

这些命令不提供有关Elasticsearch是否成功启动的反馈。相反,这些信息将写入/var/log/elasticsearch/中的日志文件中。

如果我们的Elasticsearch密钥库受密码保护,则需要使用本地文件和systemd环境变量向systemd提供密钥库密码。此本地文件在存在时应受到保护,一旦Elasticsearch启动并运行,可以安全地将其删除。

echo "keystore_password" > /path/to/my_pwd_file.tmp
chmod 600 /path/to/my_pwd_file.tmp
sudo systemctl set-environment ES_KEYSTORE_PASSPHRASE_FILE=/path/to/my_pwd_file.tmp
sudo systemctl start elasticsearch.service

默认情况下,Elasticsearch服务不会在systemd日志中记录信息。要启用journalctl日志记录,必须从elasticsearch.service文件的ExecStart命令行中删除--quiet选项。

启用systemd日志记录后,可以使用journalctl命令获取日志记录信息:

要跟踪日志:

sudo journalctl -f

要列出elasticsearch服务的日记条目,请执行以下操作:

sudo journalctl --unit elasticsearch

要列出从给定时间开始的elasticsearch服务的日记条目,请执行以下操作:

sudo journalctl --unit elasticsearch --since  "2016-10-30 18:17:16"

Docker图像

如果安装了Docker映像,则可以从命令行启动Elasticsearch。根据您使用的是开发模式还是生产模式,有不同的方法。参见Docker Run

MSI packages

如果使用.msi包在Windows上安装了Elasticsearch,则可以从命令行启动Elasticsearch。如果我们呢希望它在引导时自动启动,而无需任何用户交互,请将Elasticsearch安装为Windows服务

用命令行运行

一旦安装,Elasticsearch可以从命令行启动,如果不是作为服务安装的,并且配置为在安装完成时启动,如下所示:

.\bin\elasticsearch.exe

命令行终端将显示如下输出:

es 停用词 次 es停止服务_elasticsearch

RPM包

安装后Elasticsearch不会自动启动。如何启动和停止Elasticsearch取决于我们的系统是使用SysV init还是systemd(由较新的发行版使用)。您可以通过运行以下命令来判断正在使用哪个命令:

ps -p 1

通过SysV init 运行Elasticsearch

使用chkconfig命令将Elasticsearch配置为在系统启动时自动启动

sudo chkconfig --add elasticsearch

可以使用服务命令启动和停止Elasticsearch:

sudo -i service elasticsearch start
sudo -i service elasticsearch stop

如果Elasticsearch由于任何原因无法启动,它会将失败原因打印到STDOUT.Log文件可以在/var/Log/elasticsearch/中找到。

通过systemd运行Elasticsearch

要将Elasticsearch配置为在系统启动时自动启动,请运行以下命令:

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service

Elasticsearch可以按如下方式启动和停止:

sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service

这些命令不提供有关Elasticsearch是否成功启动的反馈。相反,这些信息将写入/var/log/elasticsearch/中的日志文件中。

如果我们的Elasticsearch密钥库受密码保护,则需要使用本地文件和systemd环境变量向systemd提供密钥库密码。此本地文件在存在时应受到保护,一旦Elasticsearch启动并运行,可以安全地将其删除。

echo "keystore_password" > /path/to/my_pwd_file.tmp
chmod 600 /path/to/my_pwd_file.tmp
sudo systemctl set-environment ES_KEYSTORE_PASSPHRASE_FILE=/path/to/my_pwd_file.tmp
sudo systemctl start elasticsearch.service

默认情况下,Elasticsearch服务不会在systemd日志中记录信息。要启用journalctl日志记录,必须从elasticsearch.service文件的ExecStart命令行中删除--quiet选项。

启用systemd日志记录后,可以使用journalctl命令获取日志记录信息:

要跟踪日志:

sudo journalctl -f

要列出elasticsearch服务的日记条目,请执行以下操作:

sudo journalctl --unit elasticsearch

要列出从给定时间开始的elasticsearch服务的日记条目,请执行以下操作:

sudo journalctl --unit elasticsearch --since  "2016-10-30 18:17:16"

停止Elasticsearch

Elasticsearch的有序关闭可确保Elasticsearch有机会清理和关闭未完成的资源。例如,以有序方式关闭的节点将从集群中移除自身,将translog同步到磁盘,并执行其他相关的清理活动。通过正确停止Elasticsearch,可以帮助确保有序关闭。

如果我们将Elasticsearch作为服务运行,则可以通过安装提供的服务管理功能停止Elasticsearch。

如果我们直接运行Elasticsearch,我们可以通过发送control-C(如果我们在控制台中运行Elasticsearch)或通过向POSIX系统上的Elasticsearch进程发送SIGTERM来停止Elasticsearch。我们可以通过各种工具(如ps或jps)获取PID以将信号发送到:

$ jps | grep Elasticsearch
14542 Elasticsearch

从Elasticsearch启动日志:

[2016-07-07 12:26:18,908][INFO ][node                     ] [I8hydUG] version[5.0.0-alpha4], pid[15399], build[3f5b994/2016-06-27T16:23:46.861Z], OS[Mac OS X/10.11.5/x86_64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_92/25.92-b14]

或者通过指定启动时写入PID文件的位置(-p<path>):

$ ./bin/elasticsearch -p /tmp/elasticsearch-pid -d
$ cat /tmp/elasticsearch-pid && echo
15516
$ kill -SIGTERM 15516

出现致命错误时停止

在Elasticsearch虚拟机的生命周期内,可能会出现某些致命错误,使虚拟机处于可疑状态。这些致命错误包括内存不足错误、虚拟机内部错误和严重的I/O错误。

当Elasticsearch检测到虚拟机遇到这种致命错误时,Elasticsearch将尝试记录错误,然后停止虚拟机。当Elasticsearch启动这样的关闭时,它不会像上面描述的那样经历有序的关闭。Elasticsearch进程还将返回一个特殊的状态代码,指示错误的性质。

JVM internal error

128

Out of memory error

127

Stack overflow error

126

Unknown virtual machine error

125

Serious I/O error

124

Unknown fatal error

1