Elasticsearch 安装

发布于 2025年5月13日 06:09:15 (武汉时间)

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: falseelasticsearch.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 兼容

← 返回首页