您的位置:

elasticsearch启动详解

一、elasticsearch启动命令

elasticsearch是通过命令行方式启动的,执行命令前需要确保Java环境已经安装。启动命令如下:

./bin/elasticsearch

启动过程大致分为以下几个步骤:

1、首先会检查JVM参数是否正确;

2、其次会检查配置文件是否正确;

3、然后会创建日志文件;

4、接着启动elasticsearch服务;

5、最后开始监听端口并对外提供服务。

二、elasticsearch启动卡住了

有时候我们在启动elasticsearch时可能会遇到卡住的情况,通常这种情况是由于JVM参数设置不当、硬件资源不足或其他未知原因造成的。遇到这种情况需要先检查一下JVM的日志,看看是不是有什么异常信息。

另外,我们还可以通过增加JVM内存大小来解决这个问题,JVM内存的配置文件为elasticsearch.yml,将下面的参数值调大即可。

    bootstrap.memory_lock: true
    discovery.type: single-node
    ES_JAVA_OPTS: "-Xms4g -Xmx4g"

三、elasticsearch启动使用root

通常情况下我们不应该以root用户启动elasticsearch,因为elasticsearch使用root权限启动会存在安全问题,而且我们也不需要root权限来启动elasticsearch。如果实在无法避免使用root权限启动,可以在启动命令前加上sudo。

sudo ./bin/elasticsearch

四、elasticsearch启动报错

在启动elasticsearch时可能会遇到各种各样的报错,这些报错信息通常是非常友好的。针对报错信息可以通过检查JVM配置、配置文件格式有误、端口占用等方面进行排查。

例如下面这个错误表示JVM内存不足:

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000ccb80000, 273678336, 0) failed; error='Cannot allocate memory' (errno=12)

又例如下面这个错误表示配置文件格式有误:

Exception in thread "main" SettingsException[Failed to load settings from [elasticsearch.yml]]; nested: ElasticSearchParseException[Failed to parse the [http.port] setting value [invalid]]; nested: NumberFormatException[For input string: "invalid"];

五、elasticsearch启动关闭

如果需要关闭elasticsearch,可以直接在终端中按下Ctrl+C。

如果需要远程关闭elasticsearch,则需要发送一个POST请求到http://localhost:9200/_shutdown,如下所示:

curl -X POST "http://localhost:9200/_shutdown"

六、elasticsearch启动失败

如果elasticsearch启动失败,可能是由于以下原因导致:

1、JVM启动参数设置有误;

2、硬件资源不足;

3、操作系统限制了进程数量;

4、配置文件格式有误;

5、已有的elasticsearch用户没有启动elasticsearch的权限。

七、elasticsearch启动卡住

如果elasticsearch启动过程中卡住了,我们可以先检查一下JVM参数是否设置正确,同时也可以查看一下日志文件,看看是否有什么异常信息。

如果elasticsearch服务已经在运行了但是管理界面没有响应,则可能是由于TCP/IP端口被防火墙或其它原因阻塞了。

八、elasticsearch启动参数

在启动elasticsearch时我们可以通过传递参数来改变默认行为,例如启动时关闭搜索缓存:

./bin/elasticsearch -E "search.cache.enabled=false"

更多启动参数可以查看elasticsearch的官方文档。

九、elasticsearch启动日志

elasticsearch启动时会生成日志文件,日志文件地址为logs/elasticsearch.log,在调试过程中可以通过查看日志文件来了解elasticsearch运行的详细信息。

十、elasticsearch启动不了

如果elasticsearch启动不了,可能是由于硬件资源不足导致的或者操作系统设置了进程数量限制,请先查看JVM内存、硬盘空间是否足够。

如果硬件资源充足,可以尝试修改操作系统的限制值,如下所示:

sudo sysctl -w vm.max_map_count=262144

以上是macOS的设置方法,如果是其他操作系统需要查看相关文档。

总之,elasticsearch启动过程中遇到问题并不可怕,很多问题都可以通过查看日志、调整JVM参数、修改配置文件来解决。逐个排查问题,我们相信你一定能顺利启动elasticsearch。