2.1 搭建单节点集群与 Kibana 控制台 本节摘要:单节点是学习期的最佳形态——配置少、排错快、行为与多节点一致。本节从下载安装包讲起,改两行配置、启动进程、看懂日志与健康检查,再装上 Kibana 作为控制台。完成这一节,你的机器上就有一个绿色的试验场,等待 doc-1001 进站。 动手:二十分钟搭好单节点 从概念进入实操,环境越简单越好。本节的路径是:下载、解压、改配置、启动、验证、装控制台,六步走完。 一、下载与解压 到 Elasticsearch 官网的下载页取对应平台的发行包(写作时主版本为 8 系列),选 zip 或 tar 压缩包形态,避免包管理器的版本滞后。
本节摘要:单节点是学习期的最佳形态——配置少、排错快、行为与多节点一致。本节从下载安装包讲起,改两行配置、启动进程、看懂日志与健康检查,再装上 Kibana 作为控制台。完成这一节,你的机器上就有一个绿色的试验场,等待 doc-1001 进站。
从概念进入实操,环境越简单越好。本节的路径是:下载、解压、改配置、启动、验证、装控制台,六步走完。
到 Elasticsearch 官网的下载页取对应平台的发行包(写作时主版本为 8 系列),选 zip 或 tar 压缩包形态,避免包管理器的版本滞后。解压后的目录结构值得花一分钟认识:
elasticsearch-8.x.x/ bin/ 可执行脚本 启动入口在这里 config/ 配置目录 elasticsearch.yml 是主配置 data/ 数据目录 分片文件落在这里 logs/ 运行日志 排错第一现场 jdk/ 自带运行时 不依赖系统环境
自带 JDK 是个贴心的设计:引擎对运行时版本敏感,发行包锁死版本,省去环境冲突。
学习环境只需要改两处。第一处在主配置里声明单节点模式,免去启动时的发现与选举等待:
# config/elasticsearch.yml 追加 discovery.type: single-node xpack.security.enabled: false # 本地实验关闭安全校验 生产必须开启
第二处把堆内存固定住。默认堆会按机器内存的一半自动分配,笔记本上常常过大,导致系统频繁换页。打开配置目录里的虚拟机参数文件,把两行都改成 1GB:
# config/jvm.options.d/heap.options -Xms1g -Xmx1g
最小值与最大值设成一样,运行期不再重新申请,避免抖动。给堆的一半、给系统文件缓存留一半,是后面调优课的预告——Lucene 的段文件靠系统缓存加速,堆并非越大越好。
Windows 下在命令行进入解压目录执行启动脚本,类 Unix 平台同理:
bin/elasticsearch # 前台启动 日志直接可见 # 另开一个终端 验证端口与集群状态 curl -s localhost:9200/_cluster/health?pretty
健康接口的返回大致长这样:
{ "cluster_name": "elasticsearch", "status": "green", "number_of_nodes": 1, "active_primary_shards": 1, "active_shards": 1 }
status 三种颜色的含义第 1 章讲过:绿色全就位、黄色缺副本、红色丢主分片。单节点默认索引副本为 1 时会黄——分身无处安放,不是故障。验证通过后按住中断键停掉进程,改成后台方式再启动一次,养成学习的固定姿势。
命令行发请求可行但费力,Kibana 的开发工具控制台提供补全、格式化与历史记录,学习效率翻倍。同样从官网取同主版本的压缩包,改一行配置连接本地节点:
# kibana 配置文件 server.port: 5601 elasticsearch.hosts: ["http://localhost:9200"]
启动后浏览器访问本机 5601 端口,左侧菜单进入开发工具,就能在控制台里直接书写请求。控制台语法比原生命令行更简练:方法与路径同行、请求体另起,注释支持井号开头。
GET _cluster/health # 在控制台运行后 右侧直接显示格式化过的返回
常见坑:启动失败十有八九是三件事——堆设太大(机器内存不足)、数据目录无写权限、端口被占。先看日志目录里的主日志文件,最后几行通常写着明确原因;改完配置重启前,把数据目录清空可避免旧状态干扰。
关键直觉:把"启动节点"与"验证健康"绑定成肌肉记忆。此后每章实验前先敲一次健康检查,环境坏了早发现,实验数据少作废。
| 考核点 | 达标标准 |
|---|---|
| 目录结构 | 说出 bin、config、data、logs、jdk 各自的用途与排错入口 |
| 两行配置 | 解释单节点模式与安全开关在学习环境的意义及生产差异 |
| 堆内存纪律 | 说出最小值与最大值相等的理由,以及"一半给文件缓存"的原则 |
| 健康验证 | 独立解读健康响应的关键字段并判断该不该处理 |
| 控制台语法 | 在 Kibana 控制台运行请求、读懂格式化结果与井号注释 |
此后每章实验前跑一遍这三条,三十秒确认环境无恙:
GET _cluster/health # 看 status 与 number_of_nodes GET _cat/indices?v # 看前几章建的索引还在不在 GET tickets/_count # 看样例数据有没有被动过
三条都符合预期再开始动手;任何一条异常,先回日志目录找原因,别带着坏环境做实验——实验结论的解释力取决于环境的可信度,这是贯穿全书的工作纪律。