部署 Elasticsearch(简称 ES)有多种方式,最简单的是使用 Docker,生产环境通常使用 Linux 二进制包 或 包管理器。
在开始之前,需要注意一个最常见的坑:Elasticsearch 在 Linux 下不能使用 root 用户启动,且需要调整系统内核参数。
如果你在 Linux 上部署(无论是原生包还是 Docker),建议先修改系统参数,否则 ES 会启动失败:
修改 vm.max_map_count(虚拟内存映射数)
ES 需要大量的内存映射区域:
# 临时生效
sudo sysctl -w vm.max_map_count=262144
# 永久生效(重启后保留)
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
创建专用非 Root 用户(仅限原生包部署)
useradd esuser
passwd esuser
如果你安装了 Docker,只需一行命令即可启动一个单节点 ES(适合开发测试):
docker run -d \
--name elasticsearch \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "xpack.security.enabled=false" \
docker.elastic.co/elasticsearch/elasticsearch:8.13.4
参数说明:
-p 9200:9200:HTTP REST API 端口(对外访问)。-p 9300:9300:集群节点间通信端口。discovery.type=single-node:设置为单节点模式(不组成集群)。ES_JAVA_OPTS:限制 JVM 堆内存大小(根据你的机器配置调整,如 -Xms1g -Xmx1g)。xpack.security.enabled=false:注意:ES 8.x 默认开启了安全认证(账号密码),为了方便测试先关闭它;如果是生产环境,建议开启并配置密码。下载并解压(以 8.13.4 版本为例)
# 切换到 esuser 并下载
su esuser
cd /home/esuser
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.13.4-linux-x86_64.tar.gz
tar -xzf elasticsearch-8.13.4-linux-x86_64.tar.gz
cd elasticsearch-8.13.4
修改配置文件 config/elasticsearch.yml
# 设置集群名称
cluster.name: my-application
# 设置节点名称
node.name: node-1
# 允许外部 IP 访问(如果需要远程连接,设为 0.0.0.0)
network.host: 0.0.0.0
# 单节点模式
discovery.type: single-node
# 关闭安全认证(测试用,生产请开启并配置)
xpack.security.enabled: false
(可选)修改 JVM 内存 config/jvm.options
如果机器内存小,修改以下两行(建议两者相等,且不超过物理内存的 50%):
-Xms512m
-Xmx512m
启动 ES
./bin/elasticsearch
# 如果想后台运行,加 -d 参数
# ./bin/elasticsearch -d
以 Ubuntu/Debian 为例:
# 导入 Elastic 签名密钥
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg
# 添加软件源
echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
# 安装
sudo apt update && sudo apt install elasticsearch
# 启动
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
在浏览器或命令行访问 9200 端口:
curl http://localhost:9200
如果部署成功,你会看到类似以下的 JSON 返回:
{
"name" : "node-1",
"cluster_name" : "my-application",
"cluster_uuid" : "xxxxxxxxxxxx",
"version" : {
"number" : "8.13.4",
"build_flavor" : "default",
...
},
"tagline" : "You Know, for Search"
}
xpack.security,它默认提供账号密码(首次启动会在日志中打印出 elastic 超级用户的密码)。sudo swapoff -a),防止 ES 内存被交换到磁盘导致性能骤降。single-node。免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。