以下是在 CentOS 7 上安装 Elasticsearch 7.17.7 的完整步骤:(数据默认保存在/var/lib/elasticsearch下,自行更改)
一、装 Java 环境
Elasticsearch 是用 Java 编写的,所以需要先安装 Java 运行环境。
检查系统中是否已经安装了 Java:
java -version
如果显示了 Java 版本信息,则说明已安装;如果没有,则继续下一步。
1、使用 yum 安装 OpenJDK:
sudo yum install java-1.8.0-openjdk
安装 Elasticsearch
1、添加 Elasticsearch 官方仓库:
创建一个名为 /etc/yum.repos.d/elasticsearch.repo
的文件,并添加以下内容:
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
注意,这里假设你要安装 Elasticsearch 7.x 版本,你可以根据实际需求修改版本号。
2、安装 Elasticsearch:
sudo yum install elasticsearch-7.17.7
3、配置 Elasticsearch
主要配置文件是 /etc/elasticsearch/elasticsearch.yml
。以下是一些常见的配置选项:
cluster.name: my-cluster
node.name: node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node
调整系统参数:
Elasticsearch 对文件描述符和内存有较高要求。编辑 /etc/sysctl.conf
文件,添加以下内容以增加文件描述符限制:
fs.file-max = 655360
更改 Elasticsearch 数据和日志目录的所有权:
sudo chown -R elasticsearch:elasticsearch /var/lib/elasticsearch
sudo chown -R elasticsearch:elasticsearch /var/log/elasticsearch
四、启动 Elasticsearch
使用系统服务启动:
sudo systemctl start elasticsearch
查看服务状态:
sudo systemctl status elasticsearch
确认 Elasticsearch 是否正在运行:
curl -X GET 'http://localhost:9200'
错误排查
1、内存不足:如果日志中显示与内存相关的错误,例如 “Java heap space”,这可能意味着系统没有足够的内存分配给 Elasticsearch。可以尝试以下方法解决:
增加 Elasticsearch 的内存分配。在 elasticsearch.yml
配置文件中,可以调整 xms
(初始堆大小)和 xmx
(最大堆大小)参数。例如:
-Xms4g
-Xmx4g
2、配置错误:如果是配置问题导致的错误,检查 elasticsearch.yml
文件中的配置是否正确。常见的错误包括:
错误的集群名称、节点名称或网络配置。确保这些配置与你的环境和需求相匹配。
如果使用了自定义插件或模块,确保它们已正确安装和配置。
单机部署 elasticsearch.yml里要加discovery.type: single-node
开放服务器端口
关闭Linux防火墙:
永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop
或者只开放单一端口
对于使用firewalld
的系统:
sudo firewall-cmd --permanent --add-port=9200/tcp
sudo firewall-cmd --reload
确保你的应用程序(如Elasticsearch)已正确配置并监听9200端口。如果你使用的是SELinux,确保也为Elasticsearch添加了相应的端口规则。