Elasticsearch 安装与配置指南(Windows/Linux/Mac 通用)
Elasticsearch(ES)的安装核心是「环境依赖(Java)→ 下载解压 → 基础配置 → 启动验证」,支持 Windows、Linux、Mac 系统,以下是 step-by-step 实操教程,含单节点部署(开发/测试)和核心配置说明,适合新手快速上手。
一、前置条件:安装 Java 环境(必做)
ES 基于 Java 开发,必须安装 Java 8 或 Java 11(推荐 Java 11,兼容性最好),不支持 Java 17+ 部分版本,需提前配置环境变量。
1. 检查是否已安装 Java
打开终端/命令提示符,输入以下命令,若显示版本号则已安装(需满足 1.8.x 或 11.x):
java -version
示例合格输出(Java 11):
openjdk version "11.0.20" 2023-07-18 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.20.0.8-1.el7_9) (build 11.0.20+8-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.20.0.8-1.el7_9) (build 11.0.20+8-LTS, mixed mode, sharing)
2. 安装 Java(未安装时操作)
方式 1:手动安装(推荐,稳定)
- 下载地址(Oracle JDK 11,需注册 Oracle 账号):
https://www.oracle.com/java/technologies/downloads/#java11 - 或 OpenJDK 11(无需注册,免费):
https://adoptium.net/temurin/releases/?version=11
方式 2:命令行安装(Linux/Mac)
- Linux(CentOS/RHEL):
yum install java-11-openjdk-devel -y - Linux(Ubuntu/Debian):
apt-get install openjdk-11-jdk -y - Mac(Homebrew):
brew install openjdk@11
3. 配置 Java 环境变量(关键)
Windows 系统:
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」;
- 新建「系统变量」:
- 变量名:
JAVA_HOME - 变量值:Java 安装路径(如
C:\Program Files\Java\jdk-11.0.20);
- 变量名:
- 编辑「系统变量」中的
Path,新增 2 条:%JAVA_HOME%\bin%JAVA_HOME%\jre\bin(若 JDK 11 无 jre 目录,可执行bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre生成);
- 验证:重启命令提示符,输入
java -version显示版本即生效。
Linux/Mac 系统:
- 编辑环境变量配置文件(如
~/.bashrc或/etc/profile):vi ~/.bashrc - 新增以下内容(Java 安装路径需替换为实际路径,可通过
which java查找):export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.20.0.8-1.el7_9.x86_64 export PATH=$JAVA_HOME/bin:$PATH - 生效配置:
source ~/.bashrc # 或 source /etc/profile - 验证:输入
java -version显示版本即生效。
二、安装 Elasticsearch(3 种系统通用流程)
1. 下载 ES 安装包
推荐安装 8.x 稳定版(如 8.15.0,最新稳定版可在官网查询):
- 官网下载地址:https://www.elastic.co/cn/downloads/elasticsearch
- 选择对应系统(Windows/Linux/Mac),下载「ZIP/TAR」包(无需安装,解压即可用)。
2. 解压安装包(避免中文路径)
- Windows:解压到无中文、无空格目录(如
D:\Elasticsearch\elasticsearch-8.15.0); - Linux/Mac:解压到
/usr/local或自定义目录(如~/elasticsearch):# Linux/Mac 示例:下载后解压到 /usr/local wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.15.0-linux-x86_64.tar.gz tar -zxvf elasticsearch-8.15.0-linux-x86_64.tar.gz -C /usr/local/ # 重命名(可选,方便操作) mv /usr/local/elasticsearch-8.15.0 /usr/local/elasticsearch
3. 重要提醒:禁止用 root 用户启动(Linux/Mac)
ES 不允许 root 用户直接启动,需创建普通用户并授权:
# 1. 创建普通用户(如 esuser)
useradd esuser
# 2. 授权 ES 目录给该用户
chown -R esuser:esuser /usr/local/elasticsearch
# 3. 切换到普通用户
su esuser
三、核心配置(单节点部署,开发/测试环境)
ES 配置文件在 config 目录下,核心文件为 elasticsearch.yml(主配置)和 jvm.options(JVM 内存配置),无需复杂配置,修改以下关键项即可。
1. 修改 JVM 内存配置(config/jvm.options)
ES 默认 JVM 堆内存为 1GB,需根据服务器内存调整(建议设为物理内存的 50%,最大不超过 31GB):
- 编辑
config/jvm.options,找到以下两行,修改为合适值:-Xms4g # 最小堆内存(如 4GB,根据实际内存调整) -Xmx4g # 最大堆内存(必须与最小堆内存一致,避免频繁扩容) - 示例:8GB 物理内存设为
4g,16GB 设为8g,32GB 设为16g(不超过 31GB)。
2. 修改主配置(config/elasticsearch.yml)
打开 config/elasticsearch.yml,添加/修改以下配置(单节点部署核心项):
# 1. 集群名称(默认 elasticsearch,可自定义,多节点需一致)
cluster.name: my-elasticsearch-cluster
# 2. 节点名称(默认随机生成,可自定义)
node.name: node-1
# 3. 数据存储路径(默认在 data 目录,建议自定义,避免重装丢失)
path.data: /usr/local/elasticsearch/data # Linux/Mac
# path.data: D:\Elasticsearch\elasticsearch-8.15.0\data # Windows
# 4. 日志存储路径(默认在 logs 目录,可自定义)
path.logs: /usr/local/elasticsearch/logs # Linux/Mac
# path.logs: D:\Elasticsearch\elasticsearch-8.15.0\logs # Windows
# 5. 网络配置(允许外部访问,单节点设为 0.0.0.0)
network.host: 0.0.0.0
# 6. 端口配置(默认 9200 为 HTTP 通信端口,9300 为集群内部端口)
http.port: 9200
# 7. 单节点部署关键配置(禁用集群发现,避免自动寻找节点)
discovery.type: single-node
# 8. 关闭内存锁定(避免启动失败,开发环境可选)
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
# 9. 跨域配置(允许 Kibana、Python 客户端等外部工具访问,开发环境必开)
http.cors.enabled: true
http.cors.allow-origin: "*" # 允许所有来源(生产环境需指定具体 IP)
http.cors.allow-headers: Authorization,Content-Type
# 10. 认证配置(8.x 默认开启 HTTPS 和密码认证,开发环境可简化)
# 禁用 HTTPS(开发环境可选,方便调试,生产环境建议开启)
xpack.security.enabled: false # 关闭密码认证(开发环境)
xpack.security.transport.ssl.enabled: false # 关闭传输层 SSL
配置说明:
- 生产环境需开启
xpack.security.enabled: true(密码认证)和 HTTPS,下文会补充; - 路径配置(
path.data/path.logs)需确保当前用户有读写权限(Linux/Mac 需chown -R esuser:esuser授权); network.host: 0.0.0.0允许外部设备访问(如 Windows 部署后,局域网内其他电脑可通过 IP 访问)。
四、启动 Elasticsearch
1. Windows 系统启动:
- 打开「命令提示符」(以普通用户运行,无需管理员);
- 切换到 ES 解压目录的
bin文件夹:cd D:\Elasticsearch\elasticsearch-8.15.0\bin - 启动 ES:
elasticsearch.bat - 启动成功标志:终端显示
started(无报错,日志无红色异常)。
2. Linux/Mac 系统启动:
- 切换到普通用户(
su esuser); - 切换到 ES 目录的
bin文件夹:cd /usr/local/elasticsearch/bin - 启动 ES:
- 前台启动(测试用,关闭终端即停止):
./elasticsearch - 后台启动(生产用,推荐):
./elasticsearch -d # -d 表示后台运行
- 前台启动(测试用,关闭终端即停止):
- 启动成功检查:
# 查看 ES 进程是否存在 ps -ef | grep elasticsearch # 查看日志(确认无报错) tail -f /usr/local/elasticsearch/logs/my-elasticsearch-cluster.log
常见启动失败问题:
- Java 环境未配置:报错
Could not find or load main class org.elasticsearch.bootstrap.Elasticsearch,检查JAVA_HOME配置; - 端口被占用:报错
port 9200 is already in use,关闭占用 9200/9300 端口的程序,或修改http.port配置; - 权限不足:Linux/Mac 报错
Permission denied,确保path.data/path.logs目录已授权给普通用户; - 内存不足:报错
Java heap space,调整jvm.options中的-Xms/-Xmx为更小值(如 2GB)。
五、验证 ES 是否启动成功
1. 浏览器/Postman 验证:
打开浏览器,输入 http://localhost:9200(本地访问)或 http://[ES服务器IP]:9200(外部访问),若返回以下 JSON 即成功:
{
"name" : "node-1",
"cluster_name" : "my-elasticsearch-cluster",
"cluster_uuid" : "xxxxxxxxxxxxxxxxxxxxxxxx",
"version" : {
"number" : "8.15.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "xxxxxxxxxxxxxxxxxxxxxxxx",
"build_date" : "2024-05-21T10:02:17.694373207Z",
"build_snapshot" : false,
"lucene_version" : "9.10.0",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
2. 命令行验证(curl):
终端输入以下命令,返回上述 JSON 即成功:
curl http://localhost:9200
六、生产环境补充配置(可选)
若用于生产环境,需开启认证、优化性能,以下是关键补充配置:
1. 开启密码认证(config/elasticsearch.yml)
xpack.security.enabled: true # 开启密码认证
xpack.security.transport.ssl.enabled: true # 开启传输层 SSL
xpack.security.http.ssl.enabled: true # 开启 HTTP 层 SSL(HTTPS)
xpack.security.http.ssl.certificate: config/certs/http_ca.crt # 证书路径(默认自动生成)
- 重启 ES 后,执行以下命令设置内置用户密码(
elastic为超级管理员):cd /usr/local/elasticsearch/bin ./elasticsearch-setup-passwords interactive # 交互式设置密码,记牢 elastic 用户密码 - 验证:访问
https://localhost:9200,输入用户名elastic和密码,返回集群信息即生效。
2. 性能优化配置(生产环境)
# 磁盘水位线(避免磁盘满,默认 85%/90%/95%)
cluster.routing.allocation.disk.watermark.low: 85%
cluster.routing.allocation.disk.watermark.high: 90%
cluster.routing.allocation.disk.watermark.flood_stage: 95%
# 索引刷新间隔(非实时场景设为 30s,减少刷盘开销)
index.refresh_interval: 30s
# 线程池优化(根据 CPU 核心数调整)
thread_pool.write.size: 4 # 写入线程池大小(建议 CPU 核心数的 50%)
thread_pool.search.size: 8 # 搜索线程池大小(建议 CPU 核心数)
3. 防火墙配置(Linux 生产环境)
开放 9200 端口(HTTP/HTTPS),允许应用服务器访问:
# CentOS/RHEL
firewall-cmd --permanent --add-port=9200/tcp
firewall-cmd --reload
# Ubuntu/Debian
ufw allow 9200/tcp
ufw reload
七、停止 Elasticsearch
1. Windows 系统:
直接关闭启动 ES 的命令提示符窗口,或在任务管理器中结束 elasticsearch.exe 进程。
2. Linux/Mac 系统:
# 1. 查找 ES 进程 ID
ps -ef | grep elasticsearch
# 2. 杀死进程(替换为实际 PID)
kill -9 [ES_PID]
# 或用 ES 自带脚本停止(后台启动时)
cd /usr/local/elasticsearch/bin
./elasticsearch-stop.sh
八、总结:安装配置核心流程
安装 Java 11 → 下载 ES 并解压 → 配置 JVM 内存 → 修改 elasticsearch.yml(网络/跨域/路径)→ 启动 ES → 验证访问
关键要点:
- Java 环境是前提,必须匹配版本(8/11);
- 路径避免中文/空格,Linux/Mac 需用普通用户启动;
- 开发环境可关闭认证,生产环境必须开启密码和 HTTPS;
- 堆内存配置为物理内存的 50%,最大不超过 31GB。
按以上步骤,即可完成 ES 单节点部署,后续可结合 Kibana 可视化、Python 客户端进行数据分析或全文检索开发。


221

被折叠的 条评论
为什么被折叠?



