专业的JAVA编程教程与资源

网站首页 > java教程 正文

Linux 环境下 ElasticSearch8.0 版本安装指南

temp10 2025-09-21 22:29:51 java教程 2 ℃ 0 评论

在当今大数据和云计算盛行的时代,高效的数据搜索和分析工具对于互联网软件开发人员来说至关重要。ElasticSearch 作为一款分布式、RESTful 风格的搜索和数据分析引擎,凭借其强大的功能,深受广大开发者的喜爱。本文将详细介绍在 Linux 系统中安装 ElasticSearch8.0 版本的全过程,帮助各位开发者顺利搭建起自己的搜索服务环境。

安装前的准备

(一)系统要求

Linux 环境下 ElasticSearch8.0 版本安装指南

在安装 ElasticSearch8.0 之前,需要确保我们的 Linux 系统满足一定的条件。首先,ElasticSearch 基于 Java 构建,虽然其安装包中自带了 OpenJDK 版本,但如果我们希望使用自己指定的 Java 环境,建议使用支持矩阵中列出的 Java LTS 版本的最新发布版本。其次,为了保证 ElasticSearch 的正常运行,我们需要对系统的一些参数进行调整。

虚拟内存设置:ElasticSearch 对虚拟内存有一定要求。通过以下命令,我们可以设置系统的虚拟内存参数vm.max_map_count为 262144,这是一个推荐值,有助于提升 ElasticSearch 的性能:

echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p

文件打开数设置:ElasticSearch 在运行过程中可能会打开大量文件,因此需要调整系统允许的最大文件打开数。我们可以通过修改/etc/security/limits.conf文件来实现:

cat >>/etc/security/limits.conf<<EOF
* soft nofile 65536
* hard nofile 65536
EOF

同时,还需要在/etc/pam.d/login文件中添加一行,确保设置生效:

echo "session required pam_limits.so" >> /etc/pam.d/login

禁用 swap 交换分区:swap 交换分区在一定程度上会影响 ElasticSearch 的性能,尤其是在内存紧张的情况下。为了获得更好的性能,建议禁用 swap 分区。可以通过以下命令临时禁用:

swapoff -a

如果希望永久禁用,则需要编辑/etc/fstab文件,找到 swap 相关的行,在前面加上#注释掉:

vi /etc/fstab
# 找到类似如下的行,添加#注释
# /dev/mapper/centos-swap swap                    swap    defaults        0 0

设置 TCP 重传超时:适当调整 TCP 重传超时时间,有助于优化网络通信。通过以下命令可以设置net.ipv4.tcp_retries2为 5:

sysctl -w net.ipv4.tcp_retries2=5
echo "net.ipv4.tcp_retries2=5" >> /etc/sysctl.conf

(二)下载安装包

ElasticSearch 的官方网站提供了各个版本的安装包下载,我们可以通过wget命令直接从官网下载 ElasticSearch8.0 版本的安装包及校验文件:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.0.0-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.0.0-linux-x86_64.tar.gz.sha512

下载完成后,为了确保安装包的完整性和正确性,我们需要对其进行校验。通过shasum命令进行校验:

shasum -a 512 -c elasticsearch-8.0.0-linux-x86_64.tar.gz.sha512

如果校验通过,会输出elasticsearch-{version}-linux-x86_64.tar.gz: OK。

安装过程

(一)解压安装包

在下载并校验完安装包后,接下来就是解压安装包。使用tar命令将下载的安装包解压到指定目录,这里我们解压到当前目录:

tar -xzf elasticsearch-8.0.0-linux-x86_64.tar.gz
cd elasticsearch-8.0.0/

解压完成后,我们进入到解压后的目录,此时该目录即为$ES_HOME,其中bin目录包含启动节点的elasticsearch脚本和安装插件的elasticsearch - plugin脚本;config目录包含elasticsearch.yml等重要的配置文件。

(二)用户权限设置

ElasticSearch 出于安全考虑,不允许使用root用户直接启动。因此,我们需要创建一个新的用户和用户组来运行 ElasticSearch。

创建用户组和用户:使用useradd命令创建一个名为es的用户组,并在该用户组下创建一个名为es的用户,同时设置用户密码(这里假设密码为yourpassword):

groupadd es
useradd es -g es -p yourpassword

赋予用户权限:回到 ElasticSearch 的安装目录上层,将整个 ElasticSearch 目录的所有权赋予新创建的es用户:

cd..
chown -R es:es elasticsearch-8.0.0

这样,es用户就拥有了对 ElasticSearch 目录的操作权限。

(三)配置文件调整

JVM 堆内存配置:ElasticSearch 默认的堆内存大小可能并不适合我们的服务器配置。例如,如果我们的服务器内存总共只有 4G,而 ElasticSearch 默认的堆内存大小是 4G,这显然会导致服务器内存紧张,甚至可能无法正常启动 ElasticSearch。我们可以通过修改config/jvm.options.d/目录下的配置文件来调整 JVM 堆内存。进入该目录,创建一个heap.options文件(如果不存在的话),并在其中写入如下配置(这里将堆内存设置为 1G,可根据实际情况调整):

-Xms1g
-Xmx1g

网络配置:默认情况下,ElasticSearch 只允许本地访问。如果我们希望通过其他机器也能访问该 ElasticSearch 服务,需要修改config/elasticsearch.yml文件中的网络配置。找到network.host这一行,将其值修改为0.0.0.0,表示允许所有网络访问:

network.host: 0.0.0.0

此外,如果我们要搭建集群,还需要配置discovery.seed_hosts等相关参数,这里我们先以单机安装为例,暂不涉及集群配置。

启动 ElasticSearch

在完成上述配置后,我们就可以启动 ElasticSearch 了。由于我们之前创建了es用户来运行 ElasticSearch,因此需要先切换到es用户:

su es
cd elasticsearch-8.0.0
./bin/elasticsearch -d

这里使用-d参数表示以守护进程的方式启动,这样我们退出当前终端后,ElasticSearch 进程依然会在后台运行。如果启动成功,我们可以通过日志来查看相关信息。首次启动 ElasticSearch 时,默认情况下会启用并配置安全功能,会为弹性内置超级用户生成密码,还会为传输层和 HTTP 层生成 TLS 的证书和密钥等,这些信息都会在启动日志中输出,我们需要特别注意记录下超级用户的密码,后续登录时会用到。

验证安装结果

(一)使用curl命令测试

ElasticSearch 启动后,我们可以使用curl命令来测试是否安装成功。默认情况下,ElasticSearch 监听在 9200 端口,我们可以通过以下命令进行测试:

curl http://localhost:9200

如果安装成功且服务正常运行,会返回类似如下的 JSON 数据:

{
  "name" : "your - node - name",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "your - cluster - uuid",
  "version" : {
    "number" : "8.0.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "your - build - hash",
    "build_date" : "your - build - date",
    "build_snapshot" : false,
    "lucene_version" : "9.0.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

(二)通过浏览器访问

如果我们在elasticsearch.yml文件中配置了network.host: 0.0.0.0,并且服务器的防火墙或云服务器安全组开放了 9200 端口,我们还可以通过浏览器访问http://your - server - ip:9200来验证安装结果,同样会看到类似上述的 JSON 数据展示在浏览器中。

常见问题及解决方法

(一)内存不足问题

在启动 ElasticSearch 时,如果出现闪退且没有明显的报错信息,只有ERROR:Elasticsearch exited unexpectedly,很可能是内存不足导致的。此时,我们需要进一步检查系统内存使用情况,并适当调整 JVM 堆内存大小,如前文所述修改
config/jvm.options.d/heap.options文件。

(二)root用户启动问题

如果使用root用户启动 ElasticSearch,会报fatal exception while booting
Elasticsearchjava.lang.RuntimeException: can not run elasticsearch as root错误。解决方法就是按照前文所述,创建新的用户和用户组,并赋予相应权限,使用新用户来启动 ElasticSearch。

(三)端口被占用问题

如果启动 ElasticSearch 时提示端口被占用,我们需要检查是哪个进程占用了 9200 端口(ElasticSearch 默认端口)。可以使用lsof -i:9200命令查看占用该端口的进程,然后根据情况决定是否关闭该进程,或者修改 ElasticSearch 的监听端口。修改监听端口同样在elasticsearch.yml文件中进行,找到http.port这一行,修改其值为其他未被占用的端口即可。

总结

通过以上详细的步骤,我们就完成了在 Linux 系统中安装 ElasticSearch8.0 版本的过程。希望这篇文章能帮助各位互联网软件开发人员顺利搭建起自己的 ElasticSearch 服务,为后续的数据搜索和分析工作打下坚实的基础。在实际使用过程中,如果遇到其他问题,欢迎大家查阅官方文档或者在技术论坛上交流讨论,共同进步。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表