经过大量研究,我尝试了以下方法。它现在对我有用。首先,如果使用的是 Elastic Search 5 或 6,请确保您是否安装了 Java。对于版本 7,我们不需要特别说明。
激活服务:
在 nano 编辑器中打开 yml 文件进行以下设置。
sudo nano /etc/elasticsearch/elasticsearch.yml
确认以下设置:(取消注释以下行,它们应该从开头开始,没有任何空格)
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 127.0.0.1
#
# Set a custom port for HTTP:
#
http.port: 9200
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
discovery.seed_hosts: []
在 '/etc/elasticsearch/jvm.options' 中确认 jvm.options 文件的配置:
sudo nano /etc/elasticsearch/jvm.options
内存分配Xms 和Xmx:
为获得最佳性能分配不超过 50% 的必要内存。如果您知道 swappiness 和 timeout 等,您可以调整其他设置,但如果您不确定,请不要触摸它们。
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms4g
-Xmx4g
我有一个 8 GB 内存,因此分配了 4 GB。随意在集合 {1024m, 750m, 512m, 256m} 中分配-Xms2048m 和-Xmx2048m 等。这是您对使用方式的选择。
修复上述问题后,运行以下命令并重新启动系统。我们需要重新启动,因为我们编辑了系统范围的环境配置才能生效。
同时通过 docker 和其他介质安装不是问题。但是,从两种方式启动服务会产生冲突,因为无法复制侦听的 TCP 端口。简而言之,从 docker pull 镜像或本地安装运行弹性搜索服务。不是同时两个。如果您有关于重复端口的错误,请确保点击以下命令:
sudo systemctl stop elasticsearch.service
要让 Elasticsearch 在系统重新启动时自动重新加载,请使用以下命令:(如果通过 wget 和 apt / 从二进制文件 / 除 docker image pull 之外的任何其他弹性搜索安装过程安装。对于 docker,只需重新加载 daemon -d 就足够了(第一个命令)):
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
它对我很有效。我希望这可以澄清问题。