Elasticsearch 安装配置
本章介绍如何安装和配置 Elasticsearch 及其配套工具 Kibana。
系统要求
硬件要求
| 资源 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 1 核 | 2 核以上 |
| 内存 | 2 GB | 8 GB 以上 |
| 磁盘 | 10 GB | SSD,50 GB 以上 |
软件要求
- 操作系统:Linux、macOS、Windows
- Java:Elasticsearch 8.x 内置 JDK,无需单独安装
- 浏览器:用于访问 Kibana(Chrome、Firefox、Edge)
安装 Elasticsearch
使用 Docker 安装(推荐)
# 拉取 Elasticsearch 镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.12.0
# 创建网络
docker network create elastic
# 启动 Elasticsearch(单节点模式)
docker run --name es01 --net elastic -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.12.0
# 启动成功后,会输出:
# ✅ Elasticsearch security features have been automatically configured!
# ✅ Password is: xxxxxxxxxx
# ✅ HTTP CA certificate: /usr/share/elasticsearch/config/certs/http_ca.crt
解释:
--net elastic:创建专用网络,用于与其他 Elastic Stack 组件通信-p 9200:9200:映射 HTTP API 端口-m 1GB:限制内存使用(Docker Desktop 需要分配足够内存)
在 Linux 上安装
# 下载并安装 GPG 密钥
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
# 添加 APT 仓库
sudo apt-get install apt-transport-https
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/elastic-8.x.list
# 安装 Elasticsearch
sudo apt-get update && sudo apt-get install elasticsearch
# 启动服务
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
# 检查状态
sudo systemctl status elasticsearch
在 macOS 上安装(Homebrew)
# 添加 Elastic 仓库
brew tap elastic/tap
# 安装 Elasticsearch
brew install elastic/tap/elasticsearch-full
# 启动服务
brew services start elastic/tap/elasticsearch-full
# 或前台运行
elasticsearch
在 Windows 上安装
# 使用 Chocolatey 安装
choco install elasticsearch
# 或下载 ZIP 包手动安装
# 1. 下载:https://www.elastic.co/downloads/elasticsearch
# 2. 解压到指定目录
# 3. 运行 bin\elasticsearch.bat
安装 Kibana
Kibana 是 Elasticsearch 的可视化工具,提供数据探索、仪表盘等功能。
使用 Docker 安装
# 拉取 Kibana 镜像
docker pull docker.elastic.co/kibana/kibana:8.12.0
# 启动 Kibana
docker run --name kib01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.12.0
Linux/macOS 安装
# Linux
sudo apt-get install kibana
sudo systemctl start kibana
# macOS
brew install elastic/tap/kibana-full
brew services start elastic/tap/kibana-full
验证安装
检查 Elasticsearch 状态
# 使用 curl 访问(需要用户名密码)
curl -k -u elastic:your_password https://localhost:9200
# 响应示例
{
"name" : "node-1",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "xxx",
"version" : {
"number" : "8.12.0",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "xxx",
"build_date" : "2024-01-01T00:00:00.000000000Z",
"lucene_version" : "9.8.0"
},
"tagline" : "You Know, for Search"
}
解释:
-k:忽略 SSL 证书验证(自签名证书)-u elastic:password:使用基本认证- 返回 JSON 格式的集群信息表示安装成功
检查集群健康状态
curl -k -u elastic:your_password https://localhost:9200/_cluster/health?pretty
# 响应示例
{
"cluster_name" : "elasticsearch",
"status" : "green", # green=健康, yellow=警告, red=错误
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 0,
"active_shards" : 0
}
访问 Kibana
- 打开浏览器访问
http://localhost:5601 - 输入 Elasticsearch 生成的 enrollment token
- 使用 elastic 用户和密码登录
基本配置
配置文件位置
- Elasticsearch:
config/elasticsearch.yml - JVM 配置:
config/jvm.options - Kibana:
config/kibana.yml
Elasticsearch 配置
# config/elasticsearch.yml
# 集群名称
cluster.name: my-application
# 节点名称
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
# 安全配置(生产环境必须开启)
xpack.security.enabled: true
# 跨域配置(允许 Kibana 连接)
http.cors.enabled: true
http.cors.allow-origin: "*"
JVM 配置
# config/jvm.options
# 堆内存大小(建议设置为物理内存的 50%,不超过 32GB)
-Xms4g
-Xmx4g
# GC 日志
-XX:+UseG1GC
解释:
- 堆内存太小会影响性能,太大会导致 GC 暂停过长
- 不要超过物理内存的 50%,剩余内存留给文件系统缓存
- 不要超过 32GB,否则会禁用压缩指针
Kibana 配置
# config/kibana.yml
# 服务端口
server.port: 5601
# 服务主机
server.host: "0.0.0.0"
# Elasticsearch 地址
elasticsearch.hosts: ["https://localhost:9200"]
# Elasticsearch 用户名密码
elasticsearch.username: "kibana_system"
elasticsearch.password: "your_password"
# 中文界面
i18n.locale: "zh-CN"
安全配置
Elasticsearch 8.x 默认开启安全功能,包括:
- 认证:用户名密码认证
- 授权:基于角色的访问控制
- 加密:TLS/SSL 加密通信
重置密码
# 在 Elasticsearch 容器内或安装目录执行
bin/elasticsearch-reset-password -u elastic
# 输出新的密码
创建用户
# 创建用户
bin/elasticsearch-users useradd zhangsan -p password -r superuser
# 查看用户
bin/elasticsearch-users list
# 删除用户
bin/elasticsearch-users userdel zhangsan
Docker Compose 一键部署
创建 docker-compose.yml:
version: '3.8'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0
container_name: elasticsearch
environment:
- discovery.type=single-node
- xpack.security.enabled=false # 开发环境可关闭安全
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
ports:
- "9200:9200"
volumes:
- es_data:/usr/share/elasticsearch/data
networks:
- elastic
kibana:
image: docker.elastic.co/kibana/kibana:8.12.0
container_name: kibana
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- I18N_LOCALE=zh-CN
ports:
- "5601:5601"
depends_on:
- elasticsearch
networks:
- elastic
volumes:
es_data:
driver: local
networks:
elastic:
driver: bridge
启动服务:
# 启动
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止
docker-compose down
常见问题
1. 内存不足
错误:Java heap space
解决:增加堆内存或减少分片数量:
# jvm.options
-Xms2g
-Xmx2g
2. 虚拟内存不足
错误:max virtual memory areas vm.max_map_count [65530] is too low
解决:增加虚拟内存限制:
# Linux
sudo sysctl -w vm.max_map_count=262144
# 永久生效
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
3. 启动超时
错误:Elasticsearch did not exit normally
解决:检查日志文件,通常位于 /var/log/elasticsearch/ 目录。
小结
本章我们学习了:
- Elasticsearch 和 Kibana 的安装方法
- 使用 Docker 快速部署
- 基本配置和 JVM 调优
- 安全配置和用户管理
- Docker Compose 一键部署
- 常见问题排查
练习
- 使用 Docker 安装 Elasticsearch 8.x 和 Kibana
- 使用 curl 验证 Elasticsearch 是否正常运行
- 访问 Kibana 并创建第一个索引
- 配置 JVM 堆内存为 2GB