五、Elasticsearch在Linux的安装部署

五、Elasticsearch在Linux的安装部署

文章目录

1.Elasticsearch的作用

Elasticsearch 是一个 分布式搜索与分析引擎 ,底层基于 Lucene 。它的核心价值是能在海量数据中进行高效、复杂的搜索与实时分析

主要特点:

  • 全文搜索:支持自然语言全文检索、模糊匹配、短语搜索、高亮等
  • 结构化搜索:对结构化字段(数值、日期、地理位置等)快速过滤与排序
  • 实时分析:能在秒级时间内统计、聚合和可视化数据
  • 分布式:可以水平扩展到多个节点,存储和处理 PB 级数据
  • 多类型数据:支持文本、数字、时间、地理位置、JSON 文档等

2.安装

0. 安装前准备

  • Java 环境:8.x 自带内置 JDK(不需要单独安装)
  • 内存:建议 4GB 以上(默认 JVM 占 1GB)
  • 用户权限 :不要用 root 直接运行 ES(会被拒绝),建议创建 elasticsearch 用户
  • 网络端口
    • 9200:HTTP API
    • 9300:集群节点间通信
  • 文件描述符:至少 65535,否则可能报错

1.使用包管理器安装(推荐,自动服务化)

Ubuntu / Debian
复制代码
# 1. 导入签名
sudo apt update
sudo apt -y install apt-transport-https curl gnupg
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

# 2. 添加仓库
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" \
 | sudo tee /etc/apt/sources.list.d/elasticsearch-8.x.list

# 3. 安装
sudo apt update
sudo apt install -y elasticsearch

# 4. 开机自启 + 启动
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

RHEL / CentOS / Rocky / Alma
复制代码
# 1. 导入签名
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

# 2. 添加 yum 仓库
sudo tee /etc/yum.repos.d/elasticsearch.repo >/dev/null <<'EOF'
[elasticsearch-8.x]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

# 3. 安装
sudo dnf install -y elasticsearch || sudo yum install -y elasticsearch

# 4. 开机自启 + 启动
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

2. 使用 tar.gz 安装(灵活可控)

复制代码
# 1. 下载(以 8.14.1 为例)
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.14.1-linux-x86_64.tar.gz

# 2. 解压
tar -xzf elasticsearch-8.14.1-linux-x86_64.tar.gz
mv elasticsearch-8.14.1 /opt/elasticsearch

# 3. 创建运行用户
sudo useradd -r -s /bin/false elasticsearch
sudo chown -R elasticsearch:elasticsearch /opt/elasticsearch

# 4. 切换用户运行
sudo -u elasticsearch /opt/elasticsearch/bin/elasticsearch

首次运行会在控制台输出:

  • 生成的 elastic 用户密码
  • CA 证书
  • HTTP 证书位置

3.Docker 安装(最快)

复制代码
docker network create elastic
docker run -d --name es01 --net elastic \
  -p 9200:9200 -p 9300:9300 \
  -e ELASTIC_PASSWORD=StrongPass123 \
  docker.elastic.co/elasticsearch/elasticsearch:8.14.1

访问 http://localhost:9200,使用 elastic / StrongPass123 登录。


4. 配置文件(重要)

配置文件位置:

  • 包管理器安装:/etc/elasticsearch/elasticsearch.yml
  • tar 包安装:config/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

# 生产环境必须至少两个节点才能关闭 bootstrap 检查
discovery.type: single-node

修改后重启:

复制代码
sudo systemctl restart elasticsearch

5.验证安装

复制代码
curl -k -u elastic:<密码> https://localhost:9200

输出中应包含:

复制代码
{
  "name" : "node-1",
  "cluster_name" : "my-cluster",
  "cluster_uuid" : "...",
  "version" : {
    "number" : "8.14.1",
    ...
  },
  "tagline" : "You Know, for Search"
}

6.常见问题 & 解决

  1. max virtual memory areas vm.max_map_count [65530] is too low

    echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p

2.root 用户运行报错

  • 切换到非 root 用户:sudo -u elasticsearch ...
  1. 无法远程访问
  • network.host: 0.0.0.0

  • 开放 9200 端口:

    sudo ufw allow 9200/tcp # Ubuntu
    sudo firewall-cmd --permanent --add-port=9200/tcp && sudo firewall-cmd --reload # RHEL

  1. 忘记密码

    sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic


7.Kibana(可选)

Elasticsearch 可配套 Kibana 使用:

复制代码
# Ubuntu
sudo apt install -y kibana
sudo systemctl enable kibana
sudo systemctl start kibana

# RHEL
sudo dnf install -y kibana || sudo yum install -y kibana
sudo systemctl enable kibana
sudo systemctl start kibana

访问 http://<服务器IP>:5601

3.快速一次性安装(finalshell中直接复制)

复制代码
1. 导入 GPG 公钥

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

 2. 添加 Elasticsearch 官方 YUM 仓库

sudo tee /etc/yum.repos.d/elasticsearch.repo >/dev/null <<'EOF'
[elasticsearch-8.x]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

3. 安装 Elasticsearch

sudo yum install -y elasticsearch

4. 修改配置文件(允许远程访问)

sudo sed -i '/^#\?network.host/d' /etc/elasticsearch/elasticsearch.yml
sudo tee -a /etc/elasticsearch/elasticsearch.yml >/dev/null <<'EOF'
cluster.name: my-es-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
EOF

5. 系统参数优化(必须,不然会报错)

echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

6. 启动并设置开机自启

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

7. 防火墙放行 9200 端口(如果开启了防火墙)

sudo firewall-cmd --permanent --add-port=9200/tcp
sudo firewall-cmd --reload

8. 等待启动(第一次可能 30 秒以上),查看状态

sudo systemctl status elasticsearch