Elasticsearch 7.1.0 安装与配置指南(Ubuntu 系统,支持 ARM64/x86_64)
本文档旨在指导如何在 Ubuntu 系统(包括 ARM64 和 x86_64 平台)上安装并配置 Elasticsearch 7.1.0,并确保其使用 Java 8 运行,同时 不影响系统默认的 Java 版本(如 Java 17/Java 24)。
🧩 一、适用环境
| 组件 | 版本 |
|---|---|
| 操作系统 | Ubuntu 20.04 / 22.04 / 24.04(ARM64 或 x86_64) |
| Elasticsearch | 7.1.0 |
| Java | Java 8(Azul Zulu 推荐) |
| 其他 Java 版本 | 可共存(如 Java 17、Java 24) |
📦 二、下载必要组件
1. 下载 Elasticsearch 7.1.0(通用 tar.gz 包)
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.0-linux-x86_64.tar.gz
⚠️ 虽然文件名为
x86_64,但.tar.gz是通用格式,适用于所有架构平台(包括 ARM64)
2. 解压并重命名目录
tar -xzf elasticsearch-7.1.0-linux-x86_64.tar.gz
mv elasticsearch-7.1.0 elasticsearch
🔧 三、安装 Java 8(推荐 Azul Zulu)
1. 安装 Java 8(ARM64/x86_64 皆可)
sudo apt update
sudo apt install openjdk-8-jdk -y
2. 验证安装是否成功
java -version
输出应为:
openjdk version "1.8.0_xxx"
OpenJDK Runtime Environment (build 1.8.0_xxx)
OpenJDK 64-Bit Server VM (build 25.xxxx-bxx, mixed mode)
⚠️ 如果你看到的是 Java 17/24,请继续阅读下面的“多版本切换”部分
🔄 四、配置多版本 Java(不影响系统默认 Java)
方法一:通过 update-alternatives 切换 Java 版本(推荐)
sudo update-alternatives --config java
选择 Java 8 的路径(例如 /usr/lib/jvm/java-8-openjdk-arm64/bin/java)
方法二:临时设置环境变量(用于启动 Elasticsearch)
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64
export ES_JAVA_HOME=$JAVA_HOME
✅ 此方法不会影响其他程序使用的 Java 版本
🛠️ 五、修改 Elasticsearch 启动脚本以绑定 Java 8
编辑 Elasticsearch 启动脚本:
vim~/elasticsearch/bin/elasticsearch
在文件顶部添加如下内容:
#!/bin/bash
# 强制使用 Java 8
export ES_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64
# 以下为原始脚本内容,无需改动
source "`dirname "$0"`"/elasticsearch-env
...
保存并退出。
🧱 六、配置 JVM 参数(禁用 CMS GC)
Elasticsearch 7.1.0 默认使用 CMS 垃圾回收器,而该参数在 Java 8 更新版本中已被废弃。我们需要手动替换为 G1GC。
修改 jvm.options 文件:
vim~/elasticsearch/config/jvm.options
注释掉以下三行:
#-XX:+UseConcMarkSweepGC
#-XX:CMSInitiatingOccupancyFraction=75
#-XX:+UseCMSInitiatingOccupancyOnly
添加 G1GC 配置(推荐现代垃圾回收器):
-XX:+UseG1GC
-XX:InitiatingHeapOccupancyPercent=75
保存并退出。
🛑 七、禁用 Machine Learning 功能(ARM64 不支持)
编辑 elasticsearch.yml:
vim~/elasticsearch/config/elasticsearch.yml
添加一行以禁用 ML 功能:
xpack.ml.enabled: false
可选:如果你不需要 X-Pack 的安全功能,也可以关闭:
xpack.security.enabled: false
🚀 八、启动 Elasticsearch
cd ~/elasticsearch/bin
./elasticsearch
💡 提示:若想以后台方式运行,可以加
-d参数:
./elasticsearch -d
🧪 九、验证是否运行成功
http://localhost:9200
如果返回 JSON 数据,说明 Elasticsearch 已成功运行!
🧰 十、查看日志确认是否使用了 Java 8
grep "JVM home" ~/elasticsearch/logs/*.log
你应该看到类似输出:
[INFO ][o.e.n.Node ] [node-name] JVM home [/usr/lib/jvm/java-8-openjdk-arm64]
⚠️ 十一、常见问题及解决方法
1. Unrecognized VM option 'UseConcMarkSweepGC'
✅ 原因:未正确替换 CMS GC 为 G1GC
🔧 解决:确保 jvm.options 中已删除或注释掉 CMS 相关配置
2. X-Pack is not supported and Machine Learning is not available for [linux-aarch64]
✅ 原因:ARM64 不支持 ML 模块
🔧 解决:添加 xpack.ml.enabled: false 到 elasticsearch.yml
3. Killed(OOM)
✅ 原因:内存不足导致进程被杀死
🔧 解决:减少堆大小(修改 jvm.options):
-Xms512m
-Xmx512m
4. max virtual memory areas vm.max_map_count [65530] is too low
✅ 原因:Elasticsearch 推荐虚拟内存映射区域数量 ≥ 262144
🔧 解决:
sudo sysctl -w vm.max_map_count=262144
永久生效:
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
🧩 十二、环境变量配置建议(可选)
你可以将 Java 8 的环境变量写入 shell 配置文件中,以便每次终端会话时自动加载。
编辑你的 shell 配置文件:
vim~/.bashrc
添加如下内容:
# 设置 Java 8 供 Elasticsearch 使用
export ES_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64
应用更改:
source ~/.bashrc
🧰 十三、完整配置参考
jvm.options 示例(关键部分)
# Heap settings
-Xms512m
-Xmx512m
# Garbage collection
-XX:+UseG1GC
-XX:InitiatingHeapOccupancyPercent=75
# Misc
-XX:+AlwaysPreTouch
-Xss1m
-Dfile.encoding=UTF-8
elasticsearch.yml 示例
cluster.name: my-cluster
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
# 禁用不兼容模块
xpack.ml.enabled: false
xpack.security.enabled: false
📌 十四、总结
| 操作 | 内容 |
|---|---|
| 下载 Elasticsearch 7.1.0 | 使用 Linux x86_64 tar.gz 包 |
| 安装 Java 8 | 推荐使用 openjdk-8-jdk 或 Azul Zulu |
| 修改 jvm.options | 替换 CMS 为 G1GC |
| 禁用 ML 模块 | 添加 xpack.ml.enabled: false |
| 设置 ES_JAVA_HOME | 在启动脚本中指定 Java 8 路径 |
| 验证是否生效 | 查看日志中的 JVM home 字段 |
📎 附录 A:一键启动脚本(推荐)
创建一个脚本文件 start-es.sh:
#!/bin/bash
# 设置 Elasticsearch 使用 Java 8
export ES_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64
# 启动 Elasticsearch
~/elasticsearch/bin/elasticsearch
赋予执行权限:
chmod +x start-es.sh
运行:
./start-es.sh
📎 附录 B:systemd 服务配置(进阶用户)
创建 systemd 服务文件:
sudo vim/etc/systemd/system/elasticsearch.service
写入以下内容:
[Unit]
Description=Elasticsearch
After=network.target
[Service]
User=your-user
Group=your-group
ExecStart=/home/your-user/elasticsearch/bin/elasticsearch
Environment="ES_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64"
WorkingDirectory=/home/your-user/elasticsearch
Restart=always
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
查看状态:
sudo systemctl status elasticsearch
📌 十五、后续操作建议
| 操作 | 建议 |
|---|---|
| 安装 Kibana | 搭配使用,可视化管理 Elasticsearch |
| 配置远程访问 | 开放防火墙端口 9200 |
| 启用安全功能 | 如需生产部署,请开启 X-Pack Security |
| 升级到 7.17+ | 更好地支持 ARM64 和 Java 11 |
| 升级到 8.x LTS | 支持更广泛、安全性更强 |
📝 最终目标达成
| 项目 | 是否完成 |
|---|---|
| Elasticsearch 7.1.0 成功运行 | ✅ |
| 使用 Java 8 | ✅ |
| 不影响系统默认 Java | ✅ |
| ARM64/x86_64 兼容 | ✅ |