Elasticsearch安装(linux)

[复制链接]
发表于 2026-10-6 13:51:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

Elasticsearch 用来做日志日志检索和站内搜索都很常见,它对运行环境的要求比一般服务多一些:不能用 root 启动、要单独调内核参数、还要处理自带 JDK 与系统 JDK 的冲突。本文以 7.15.2 版本、x86_64 环境为例,把从下包到启动成功的过程完整记录,并把启动失败的两类经典报错的解法写清。

一、先确认系统架构

uname -a
uname -m

第二条输出 x86_64 就对应 x86_64 的包,aarch64 要换成 ARM 的包,装错架构解压后二进制跑不起来。

二、下载对应版本

从 Elastic 官方的制品仓库取包,把版本号和架构替换成你要的:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.2-linux-x86_64.tar.gz

生产上建议锁定具体版本而不是总下最新的,升级 ES 属于需要评估的动作,别让一次下载把版本换了。

三、解压到目标目录

tar -zxvf elasticsearch-7.15.2-linux-x86_64.tar.gz

四、创建专用运行用户

ES 出于安全考虑不允许用 root 启动,必须建一个普通用户:

useradd es
passwd es
# 建错了可以删掉重来
userdel -r es

然后把目录属主改给 es:

chown -R es:es /pzy/es/elasticsearch-7.15.2

用 ll 逐层确认目录和文件的属主是不是 es,只要有一层还是 root,启动就会在写日志日志或建索引目录时失败。

五、改 elasticsearch.yml

vim /pzy/es/elasticsearch-7.15.2/config/elasticsearch.yml

需要写的关键项:

cluster.name: elasticsearch
path.data: ./data
path.logs: /pzy/es/elasticsearch-7.15.2/data/logs
node.name: node-1
network.host: 172.16.0.10
http.port: 9200
cluster.initial_master_nodes: ["node-1"]

这里要重点说明 network.host:网上大量教程直接写 0.0.0.0,意思是监听所有网卡。ES 早期版本默认没有认证,一旦这样配置又开在公网上,等于把一个可以任意读写数据的服务直接暴露出去,历史上大量数据泄漏事件就是这么来的。正确做法是:只绑内网 IP,用防火墙限制 9200 的来源,生产环境开启 ES 自带的安全认证(xpack security)并设置账号密码。

六、处理 ES 与系统 JDK 的冲突

ES 压缩包里自带一份 JDK,但如果你系统里已经装了 JDK,ES 启动时会优先去找系统那个,版本不一致就会启动失败。改 bin/elasticsearch,显式指定用它自带的 JDK:

export ES_JAVA_HOME=/pzy/es/elasticsearch-7.15.2/jdk
export PATH=$ES_JAVA_HOME/binPATH

if [ -x "$ES_JAVA_HOME/bin/java" ]; then
        JAVA="/pzy/es/elasticsearch-7.15.2/jdk/bin/java"
else
        JAVA=`which java`
fi

记住这个规律:系统里没装 JDK 时反而不会报错(直接用自带的),装了 JDK 而不指定就会报错。

七、调 JVM 内存

切到 es 用户,改 config/jvm.options:

su es
vim /pzy/es/elasticsearch-7.15.2/config/jvm.options

把 -Xms 和 -Xmx 设成相同值(推荐物理内存的一半以内,且别超过 31G),两者不一致会引起堆震荡。

八、启动并处理两类经典报错

后台启动:

bin/elasticsearch -d

报错一:

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

解决:改 /etc/security/limits.conf,末尾加两行:

es soft nofile 65536
es hard nofile 65536

报错二:

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决:改 /etc/sysctl.conf,加一行后生效:

vm.max_map_count=262144
sysctl -p

这两个参数改完需要重新登录 es 用户才会读到新的 limits。

九、验证与后续

curl http://127.0.0.1:9200

返回一段带 cluster_name、version 的 JSON 就说明起来了。后续建议做的:加 systemd 单元托管(避免用 nohup)、配快照仓库做定期备份、开慢查询日志日志、把 9200 限制在内网。ES 最怕的不是起不来,是「起来了但谁都能连」。

qidao123.com企服评测-应用市场 编辑提示

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表