3. Elasticsearch 单节点安装:下载、配置与验证

Elasticsearch 是 ELK 栈的核心存储与检索引擎。本节将演示在 Linux 环境下完成单节点安装的全过程,涵盖二进制包下载、核心参数配置、启动验证及常见问题排查。掌握单节点安装是后续搭建集群与集成 Logstash、Kibana 的基础。

3.1 下载与解压

Elasticsearch 官方提供 .tar.gz 与 .rpm / .deb 包。本课程采用通用性最强的 .tar.gz 方式,适用于所有 Linux 发行版。

3.1.1 版本选择与下载

建议使用 7.x 或 8.x LTS 版本。以下以 Elasticsearch 7.17.15 为例(请根据实际需求替换版本号)。

下载方式对比
方式 命令 / 地址 适用场景
wget 直链 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.15-linux-x86_64.tar.gz 服务器有外网访问权限
官网手动下载 https://www.elastic.co/downloads/elasticsearch 本地下载后通过 scp 上传
yum/apt 仓库 添加 Elastic 官方源后 yum install elasticsearch 生产环境推荐,便于版本管理

3.1.2 解压与目录结构

# 解压到 /usr/local 目录
tar -zxvf elasticsearch-7.17.15-linux-x86_64.tar.gz -C /usr/local/

# 创建软链接,方便版本切换
ln -s /usr/local/elasticsearch-7.17.15 /usr/local/elasticsearch

# 查看解压后的目录结构
ls -l /usr/local/elasticsearch/

解压后关键目录说明:

目录 / 文件 作用
bin/ 启动脚本、插件管理工具
config/ 核心配置文件 elasticsearch.yml、jvm.options、log4j2.properties
data/ 索引数据存储目录(默认)
logs/ 运行日志目录
plugins/ 已安装的插件
jdk/ 内置 JDK(7.0+ 版本自带)
注意:Elasticsearch 不允许以 root 用户运行。解压后需创建专用用户并授权。
# 创建 elasticsearch 用户
useradd -m -s /bin/bash elasticsearch

# 更改目录所有者
chown -R elasticsearch:elasticsearch /usr/local/elasticsearch-7.17.15

3.2 配置 elasticsearch.yml 核心参数

elasticsearch.yml 位于 config/ 目录下,是决定节点行为的核心配置文件。单节点安装只需关注以下四个关键参数。

3.2.1 参数详解

参数 默认值 推荐值(单节点) 说明
cluster.name elasticsearch elk-cluster 集群名称,同一集群所有节点必须一致
node.name 主机名 node-1 节点名称,集群内唯一标识
path.data $ES_HOME/data /data/elasticsearch/data 索引数据存储路径,建议挂载独立磁盘
network.host 127.0.0.1 0.0.0.0 监听地址,0.0.0.0 表示所有网络接口

3.2.2 配置示例

编辑 /usr/local/elasticsearch/config/elasticsearch.yml,追加或修改以下内容:

# ---------------------------- 集群与节点 ----------------------------
cluster.name: elk-cluster
node.name: node-1

# ---------------------------- 数据与日志路径 ----------------------------
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs

# ---------------------------- 网络与端口 ----------------------------
network.host: 0.0.0.0
http.port: 9200

# ---------------------------- 单节点发现(重要) ----------------------------
discovery.type: single-node
关键说明:
1. discovery.type: single-node 是单节点模式必须配置的参数,否则节点会因无法发现其他节点而启动失败。
2. path.data 和 path.logs 建议使用独立数据盘,避免与系统盘争抢 I/O。
3. network.host 设置为 0.0.0.0 后,需确保防火墙开放 9200 和 9300 端口。

3.3 启动与验证

3.3.1 启动 Elasticsearch

切换到 elasticsearch 用户,执行启动脚本:

# 切换用户
su - elasticsearch

# 前台启动(调试用)
/usr/local/elasticsearch/bin/elasticsearch

# 后台启动(生产推荐)
/usr/local/elasticsearch/bin/elasticsearch -d -p /tmp/elasticsearch.pid

启动参数说明:

  • -d:后台守护进程模式
  • -p:将 PID 写入指定文件,便于后续管理

3.3.2 验证节点状态

节点启动约 10-30 秒后,通过以下方式验证:

  1. 检查进程
ps -ef | grep elasticsearch | grep -v grep
  1. 查看日志
tail -f /data/elasticsearch/logs/elk-cluster.log

正常启动日志末尾应包含:

[INFO ][o.e.n.Node               ] [node-1] started
[INFO ][o.e.l.LicenseService     ] [node-1] license [xxxx] mode [basic] - valid
[INFO ][o.e.g.GatewayService     ] [node-1] recovered [0] indices into cluster_state
  1. API 验证
curl -X GET "http://localhost:9200/"

返回示例:

{
  "name" : "node-1",
  "cluster_name" : "elk-cluster",
  "cluster_uuid" : "xxxx",
  "version" : {
    "number" : "7.17.15",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "xxxx",
    "build_date" : "2024-01-15T10:00:00Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8",
    "minimum_index_compatibility_version" : "6.0.0"
  },
  "tagline" : "You Know, for Search"
}
  1. 集群健康检查
curl -X GET "http://localhost:9200/_cluster/health?pretty"

期望输出:

{
  "cluster_name" : "elk-cluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}
状态解读:
green:所有主分片和副本分片均正常分配。
yellow:主分片正常,但副本分片未分配(单节点常见,可忽略)。
red:存在未分配的主分片,需排查数据或配置问题。

3.4 单节点安装流程总览

Elasticsearch 单节点安装流程 Elasticsearch 单节点安装流程 1. 下载与解压 tar -zxvf elasticsearch-*.tar.gz 2. 创建专用用户 useradd elasticsearch 3. 配置 elasticsearch.yml cluster.name / node.name path.data / network.host 4. 启动 Elasticsearch bin/elasticsearch -d 5. 验证状态 curl localhost:9200 6. 安装完成 集群状态 green 💡 单节点模式需配置 discovery.type: single-node,否则节点会因无法发现集群而启动失败。 💡 生产环境建议将 path.data 挂载到独立数据盘,并配置系统参数 vm.max_map_count。

3.5 常见问题与排查

问题现象 原因 解决方案
启动报错 max virtual memory areas vm.max_map_count [65530] is too low 系统参数不足 sysctl -w vm.max_map_count=262144 并写入 /etc/sysctl.conf
启动报错 can not run elasticsearch as root 使用 root 用户启动 切换到 elasticsearch 用户
无法访问 http://localhost:9200 network.host 未配置或防火墙未开放 检查 network.host 配置,开放 9200 端口
集群状态 red 索引分片未分配 检查 _cluster/allocation/explain API 定位原因
节点无法加入集群 discovery.type 未设置或 seed hosts 配置错误 单节点设置 discovery.type: single-node
生产环境建议:
  • 使用 systemd 管理 Elasticsearch 服务,实现开机自启。
  • 配置 JVM 堆内存(jvm.options),建议不超过物理内存的 50%,且不超过 32GB。
  • 开启安全认证(8.x 默认开启,7.x 需安装 x-pack)。