Ubuntu 安装 Elasticsearch
什么是 Elasticsearch
Elasticsearch 是一个基于 Lucene 的开源分布式搜索与分析引擎,能在海量数据中以毫秒级速度进行全文检索、结构化查询和实时数据分析,广泛用于站内搜索、日志分析和业务监控,数据以 JSON 文档形式存储,并支持水平扩展。
配置 Ubuntu 服务器
1. 确认 Ubuntu 系统版本
使用如下命令:
lsb_release -a
或者
cat /etc/os-release
或者
hostnamectl
显示如下:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.2 LTS
Release: 24.04
Codename: noble
2. 更新国内镜像源
不然 sudo apt update 可能会失败。
备份原来的镜像文件:
sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.backup
编辑 /etc/apt/sources.list.d/ubuntu.sources 文件
sudo vim /etc/apt/sources.list.d/ubuntu.sources
ubuntu.sources 文件原内容:
Types: deb
URIs: http://cn.archive.ubuntu.com/ubuntu/
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpgTypes: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
替换镜像源后内容:
阿里云
Types: deb
URIs: http://mirrors.aliyun.com/ubuntu/
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpgTypes: deb
URIs: http://mirrors.aliyun.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
腾讯云
Types: deb
#URIs: http://archive.ubuntu.com/ubuntu/
URIs: http://mirrors.tencentyun.com/ubuntu/
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg#Types: deb
#URIs: http://security.ubuntu.com/ubuntu/
#Suites: noble-security
#Components: main restricted universe multiverse
#Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
3. 更新软件包
# 更新本地的“软件包索引缓存”,获取镜像源地址中最新的软件版本
sudo apt update# 更新升级 apt update 得到的新版本,更新安装这些新版本到我们的服务器上
sudo apt upgrade -y
安装 Elasticsearch
Elasticsearch官网:https://www.elastic.co/elasticsearch
1. 官网地址下载 deb 安装包
2. 将下载好的 elasticsearch-9.1.1-amd64.deb 安装包,上传到 Ubuntu /usr/local目录
3. 执行安装 Elasticsearch 命令
sudo dpkg -i elasticsearch-9.1.1-amd64.deb
看到输出如下内容,表示安装成功。
截图输出的内容含义如下:
- Elasticsearch 软件包已经成功解包和安装。
- 认证和授权(Authentication and Authorization)已经启用,这说明 Elasticsearch 默认开启了安全机制,不像以前版本那样默认无密码。
- TLS(加密传输)也启用了,保证数据通信安全。
- 系统里自动创建了一个 elasticsearch 用户和用户组,用来运行这个服务,保证安全隔离。
- 系统给内置的 elastic 超级管理员账户随机生成了一个初始密码:2-2vq0+aTp53Z2DZUvha。 你以后登录 Kibana 或用 API 操作 Elasticsearch 时,要用这个密码(建议尽快修改密码)。
- 你可以用下面命令重置 elastic 用户密码:/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
- 生成给 Kibana 用的 enrollment token:/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
- 生成给其它 Elasticsearch 节点用的 enrollment token(用于集群搭建):/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node
- Enrollment token 是什么?
- Elasticsearch 8.x 版本默认开启了安全认证和加密,所有客户端(包括 Kibana)要连接都需要身份认证。
- Enrollment token(注册令牌) 是一种安全凭证,类似临时“通行证”,可以让 Kibana 自动完成身份验证、注册和信任建立,避免手动输入密码和复杂配置。
- 生成这个 token 后,你在 Kibana 配置里使用它,Kibana 就能用这个 token 安全地“入驻”到你的 Elasticsearch 集群。
4. 启动 Elasticsearch 服务
重新加载 systemd 的配置文件,当你安装或修改了服务文件(比如 elasticsearch.service),systemd 需要重新加载这些配置,才能正确识别和管理服务。
sudo systemctl daemon-reload
启动 Elasticsearch 服务
sudo systemctl start elasticsearch.service
5. 验证 Elasticsearch 服务是否启动
方式一:
使用 sudo systemctl status elasticsearch 命令,状态显示 active (running),表示已启动
方式二:
执行如下命令,然后输入密码
curl -u elastic --insecure https://localhost:9200/
返回如下内容,表示已启动
{"name" : "VM-24-11-ubuntu","cluster_name" : "elasticsearch","cluster_uuid" : "DWguAtYBRemeW1bEI7646w","version" : {"number" : "9.1.1","build_flavor" : "default","build_type" : "deb","build_hash" : "5e94055934defa56e454868b7783b2a3b683785e","build_date" : "2025-08-05T01:07:31.959947279Z","build_snapshot" : false,"lucene_version" : "10.2.2","minimum_wire_compatibility_version" : "8.19.0","minimum_index_compatibility_version" : "8.0.0"},"tagline" : "You Know, for Search"
}
- --insecure 是什么意思?
- 告诉 curl 忽略 HTTPS 请求中的 SSL/TLS 证书验证错误,继续发起请求。
- Elasticsearch 默认启用了 TLS 加密,使用的是 自签名证书(不是由受信任的证书机构签发的)。自签名证书默认不被操作系统或浏览器信任,curl 会因为证书“不可信”而拒绝连接。加上 --insecure 参数后,curl 就不会去验证证书的合法性,直接和服务器建立加密连接。
Elasticsearch 安装成功后,资源存放目录
非 root 用户登录,使用 sudo -i 切换到 root 环境,使用 root 权限查看
类型 | 路径 | 说明 |
---|---|---|
程序二进制文件 | /usr/share/elasticsearch/ | Elasticsearch 可执行文件和运行时文件 |
配置文件 | /etc/elasticsearch/ | 主要配置文件,如 elasticsearch.yml |
日志文件 | /var/log/elasticsearch/ | Elasticsearch 运行日志 |
数据文件 | /var/lib/elasticsearch/ | 存储索引数据 |
服务单元文件 | /lib/systemd/system/elasticsearch.service | systemd 服务文件,用于管理服务启动等 |
用户和用户组 | 系统创建 elasticsearch 用户和组 | 用于安全运行 Elasticsearch |
Elasticsearch 服务相关命令
查看服务状态:sudo systemctl status elasticsearch
启动服务:sudo systemctl start elasticsearch
停止服务:sudo systemctl stop elasticsearch
重启服务:sudo systemctl restart elasticsearch
查看服务开机自启状态:sudo systemctl is-enabled elasticsearch
启动开机自启动:sudo systemctl enable elasticsearch
禁用开机自启动:sudo systemctl disable elasticsearch
修改 Elasticsearch 用户密码
使用如下命令:
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
注意:这个命令只能重置密码为自动生成的随机密码,官方工具不支持直接指定你想设置的密码。
修改 Elasticsearch 9200 端口
编辑 /etc/elasticsearch/elasticsearch.yml 配置文件 // 没有权限操作,先使用 sudo -i 命令
sudo vim /etc/elasticsearch/elasticsearch.yml
找到 或 添加 如下配置,修改成你自己需要的端口
http.port: 9200
重启 elasticsearch 服务,使配置生效
sudo systemctl restart elasticsearch
修改 Elasticsearch 启动时 JVM 堆内存大小
编辑 /etc/elasticsearch/jvm.options 配置文件 // 没有权限操作,先使用 sudo -i 命令
sudo vim jvm.options
找到如下配置,修改成你自己需要的内存大小
# 建议两者设置成相同的值以避免堆内存动态调整带来的性能问题
# JVM 堆的初始内存大小(Minimum Heap Size)
-Xms8g
# JVM 堆的最大内存大小(Maximum Heap Size)
-Xmx8g
重启 elasticsearch 服务,使配置生效
sudo systemctl restart elasticsearch
使用下面命令查看 JVM 堆内存大小
curl -u elastic --insecure https://localhost:9200/_nodes/jvm?pretty