在 Linux 上装 Elasticsearch 并跑通第一个索引

Elasticsearch 是一个基于 Lucene 的分布式搜索和分析引擎,常用于日志检索、站内搜索和数据分析。
如果你只是想在单台 Linux 服务器上搭一套能用的 Elasticsearch,最省事的方式是下载官方 tar 包,改两三个配置项后启动,再用 _cat 和 _search 接口验证。
下面按这个顺序展开。

装之前先确认三件事

Elasticsearch 对内存和文件描述符比较敏感,装之前先看环境:

  • 操作系统:主流的 64 位 Linux 发行版均可,本文命令以 CentOS/Ubuntu 通用方式给出。
  • 内存:建议至少 2 GB,其中一半左右可以分给 Elasticsearch 的 JVM 堆。
  • Java:Elasticsearch 8.x 的 tar 包自带 JDK,不需要单独安装 Java,但系统里已有的 JAVA_HOME 可能干扰启动,建议在启动脚本里显式指向自带 JDK。

另外,Elasticsearch 默认不允许以 root 用户启动,需要先建一个普通用户:

useradd elastic
passwd elastic

下载解压并修改核心配置

以 Elasticsearch 8.x 为例,从官网下载对应架构的 tar 包,解压到 /usr/local 并改归属:

cd /tmp
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.15.0-linux-x86_64.tar.gz
tar -xzf elasticsearch-8.15.0-linux-x86_64.tar.gz -C /usr/local/
chown -R elastic:elastic /usr/local/elasticsearch-8.15.0

进入 config/elasticsearch.yml,至少修改这几项:

cluster.name: my-es
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node

其中 discovery.type:
single-node
表示单节点模式,
避免默认集群发现逻辑在单机上反复报错;network.host:
0.0.0.0
允许外部访问,
生产环境建议改成具体内网 IP 并配合防火墙。

JVM 堆内存通过 config/jvm.options.d/heap.options 调整,例如 2 GB 内存的机器可以写:

-Xms1g
-Xmx1g

堆内存不要超过物理内存的一半,也不要超过 31 GB 左右,否则会失去指针压缩的优势。

启动服务并处理常见报错

切换到 elastic 用户启动:

su - elastic
cd /usr/local/elasticsearch-8.15.0
./bin/elasticsearch

第一次启动时,日志里会输出 elastic 用户的初始密码和 HTTP CA 证书指纹,务必保存下来。
常见启动失败有两类:

  • 报 max virtual memory areas vm.max_map_count [65530] is too low:在 /etc/sysctl.conf 加 vm.max_map_count=262144,执行 sysctl -p 生效。
  • 报 unable to lock JVM Memory:说明内存锁定失败,可以在 elasticsearch.yml 里设置 bootstrap.memory_lock: true 并给 elastic 用户配置 memlock 权限,或者先把该项设为 false 让服务先跑起来。

如果需要后台运行,可以用 nohup ./bin/elasticsearch &,或者用 systemd 写一个 unit 文件管理。

验证服务并跑通第一个索引

服务启动后,另开一个终端用 curl 检查:

curl -k -u elastic:你的密码 https://localhost:9200

返回 JSON 里包含 cluster_name、version.number 和 tagline 就说明节点正常。
接着创建一个测试索引并写入一条文档:

curl -k -u elastic:你的密码 -X PUT "https://localhost:9200/books" -H 'Content-Type: application/json' -d '{"settings":{"number_of_shards":1,"number_of_replicas":0}}'

curl -k -u elastic:你的密码 -X POST "https://localhost:9200/books/_doc/1" -H 'Content-Type: application/json' -d '{"title":"Elasticsearch 入门","price":59}'

然后用 _cat 看索引状态、用 _search 确认文档可检索:

curl -k -u elastic:你的密码 "https://localhost:9200/_cat/indices?v"
curl -k -u elastic:你的密码 "https://localhost:9200/books/_search?q=title:Elasticsearch"

_cat/indices 中索引状态为 green 或 yellow(单节点副本为 0 时通常是 green),_search 返回 hits.total.value 大于 0,
就说明搭建完成。

上线前需要留意的几个点

单机跑通不等于可以直接对外提供服务。
Elasticsearch 8.x 默认开启安全认证,走的是 HTTPS;
如果客户端不校验证书,需要用 -k 跳过,生产环境应导入 CA 证书。
另外,network.host 设为 0.0.0.0 时务必配置防火墙或安全组,只放行可信来源的 9200 端口,不要直接把带密码的接口暴露在公网。

如果后续要扩展成多节点集群,需要把 discovery.type 去掉,改为配置 discovery.seed_hosts 和 cluster.initial_master_nodes,并保证各节点 cluster.name 一致。
单机验证阶段先用单节点模式把流程跑通,再考虑集群。

分享到:
上一篇
MongoDB 适合什么场景?从数据模型和读写模式判断
下一篇
Elasticsearch 搜索变慢怎么优化?从定位到调优的排查顺序
1
系统公告

关于香港云优质服务器IP地址更换的通知

尊敬的客户: 因原IP运营商大幅涨价,为避免成本转嫁至用户,我司决定更换IP服务商。本次更换后,您的续费价格将保持不变,且新IP网络质量与服务标准不受影响。新IP已分配至后台,即刻生效(更换的新IP都是香港原生IPv4)。 涉及 IP 段: 45.192.x.x 旧 IP 停用时间: 2026 年 12 月 1 日
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意