当前位置: 首页 > news >正文

Elasticsearch 集群、Kibana和IK分词器:最新版 9.3.2 手动安装教程

🧑博主简介CSDN博客专家「历代文学网」(PC端可以访问:https://lidaiwenxue.com/#/?__c=1000,移动端可关注公众号 “心海云图” 微信小程序搜索“历代文学”)总架构师,首席架构师,也是联合创始人!16年工作经验,精通Java编程高并发设计分布式系统架构设计Springboot和微服务,熟悉LinuxESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
🤝商务合作:请搜索或扫码关注微信公众号 “心海云图

Elasticsearch 集群、Kibana和IK分词器:最新版 9.3.2 手动安装教程

1. 前言

Elasticsearch 9.3.2于 2026 年3 月正式发布,作为 Elastic Stack 家族的最新成员,带来了多项性能改进与功能增强。然而,对于需要精细掌控服务器环境的运维人员而言,官方提供的包管理器安装方式往往无法满足生产环境的手动部署需求。尤其在集群模式下,节点间的通信配置、安全认证启用,以及中文搜索必须的IK分词器版本匹配与手动安装,均是实践中常见的痛点。

本文将手把手带你完成Elasticsearch 9.3.2 集群 + Kibana 可视化面板 + IK 中文分词器的全流程手动安装与配置。从环境准备、集群节点配置到插件部署,每一步均提供详尽的命令与配置文件示例,助你从零构建一套完整、稳定且支持中文搜索的日志与搜索基础架构。

1.1 Elasticsearch‌ 简介

Elasticsearch‌是一个基于JSON分布式搜索和分析引擎,它提供了一个分布式多租户能力的全文搜索引擎,具有HTTP网络接口和无模式的数据索引,不依赖于任何特定的数据库结构。

Elasticsearch的设计目标之一就是它的可扩展性,它被设计为能够处理大规模数据集。此外,它还提供了近实时的搜索和分析能力,支持结构化非结构化数据的存储索引搜索Elasticsearch的分布式特性使其部署能够随着数据和查询量的增长而无缝扩展‌。

1.2 Kibana 简介

Kibana‌则是一个开源的数据分析和可视化平台,作为Elastic Stack的一部分,它主要用于对Elasticsearch中的数据进行搜索查看交互操作。

Kibana提供了丰富的数据可视化选项,如柱状图线图饼图地图等,帮助用户以图形化的方式理解数据。它还提供了强大的数据探索功能,允许用户使用Elasticsearch的查询语言进行数据查询,并通过Kibana的界面进行数据筛选和排序。

此外,Kibana还集成了Elasticsearch机器学习功能,可以用于异常检测、预测等任务。Kibana的定制和扩展性通过丰富的API和插件系统进一步增强了其功能,使用户能够根据自己的需求定制和扩展Kibana‌

1.3 Elasticsearch 和 Kibana 配合使用场景


ElasticsearchKibana是经常被用于以下几种场景:

  • 日志管理Elasticsearch用于存储日志,Kibana用于查询可视化日志
  • 应用监控:同样,Elasticsearch存储监控数据,Kibana用于分析展示
  • 实时应用搜索Elasticsearch可以对大量数据进行快速搜索。
  • 数据分析Kibana提供丰富的数据可视化工具,如图表表格地图等。

2. Elasticsearch 下载到集群安装

2.1 Elasticsearch最新版 官方下载

Elasticsearch的官方下载地址:https://www.elastic.co/cn/downloads/elasticsearch

如上图,根据你服务器的架构选择对应的Linux版本,这里选择的是Linux x86_64架构版本。选好后,点下载按钮即可完成Elasticsearch最新版本的下载。

Elasticsearch集群的手动部署搭建相对比较麻烦,喜欢的朋友一定要有耐心看完,缺少任何一个细节都会导致启动失败!

2.2 Elasticsearch 节点环境准备

Elasticsearch集群搭建至少需要3个节点。‌这是因为Elasticsearch集群的稳定性可用性在很大程度上依赖于节点的数量配置。具体来说,至少需要3个master节点是为了防止脑裂现象的发生。脑裂是指在分布式系统中,由于网络分区导致多个节点认为自己成为了集群的主节点,从而引发数据不一致和其他问题。通过设置最少可工作的候选主节点个数(即discovery.zen.minimum_master_nodes)为(候选主节点数/2)+1,可以确保在大多数情况下,没有足够的master候选节点进行选举,从而避免脑裂的可能性。此外,至少需要3个节点也是基于集群选举算法奇数法则,这是为了保证在集群中任一节点故障时,仍然能够通过多数决策来维持集群的正常运作。

Elasticsearch集群中,节点可以承担不同的角色,包括master(主节点)data(数据节点)client(客户端节点)等。主节点负责处理集群的管理任务,如节点发现故障检测等;数据节点则负责数据的存储和处理;客户端节点则处理来自外部的请求。通过合理配置这些节点的角色和数量,可以提高集群的性能可用性。例如,为了实现高可用性和容错性,一般建议每个角色使用独立的节点,但在资源有限的情况下,也可以通过配置节点的不同角色(如在一台机器上同时运行master和data节点)来模拟多节点环境,这种做法通常被称为搭建伪集群。

在本教程中,准备了三台ES节点

  • es-node-a172.16.10.50
  • es-node-b172.16.10.51
  • es-node-c172.16.10.52

2.3 节点禁用防火墙

请将ES所有节点全部禁用防火墙,避免集群节点间出现通信故障,以及造成应用程序无法访问的问题,分别执行如下命令:

systemctl stop firewalld systemctl disable firewalld

2.4 创建elasticsearch用户和用户组

Elasticsearch需要单独创建用户用户组主要是出于安全性管理的考虑。‌

首先,Elasticsearch作为一个强大的搜索引擎,能够独立接受用户输入的脚本,因此,为了系统的安全性,需要单独建立一个用户来运行Elasticsearch,以避免潜在的安全风险。使用专门的运行用户可以限制Elasticsearch的访问权限,减少被恶意利用的可能性‌。

执行以下命令即可完成Elasticsearch用户和用户组的创建:

groupadd-relasticsearch\&&useradd-r-gelasticsearch elasticsearch

2.5 目录权限设置

假设安装目录是/usr/share/elasticsearch/Elasticsearch‌安装目录权限的设置,分为两个场景:

  1. es应用安装目录索引存放目录部署在同一个根目录下。
    root账户登录,并执行如下命令
# es安装目录权限设置chown-Relasticsearch /usr/share/elasticsearchchgrp-Relasticsearch /usr/share/elasticsearch
  1. es应用安装目录索引存放目录部署在不同一个根目录下。
# es安装目录权限设置chown-Relasticsearch /usr/share/elasticsearchchgrp-Relasticsearch /usr/share/elasticsearch# es 数据索引目录权限设置chgrp-Relasticsearch /datachown-Relasticsearch /data

2.6 修改节点句柄数

Elasticsearch‌需要大量的文件句柄主要是因为Elasticsearch是一个基于Lucene的搜索引擎,它使用倒排索引来提供快速的全文搜索功能。在Lucene中,每个文档都被分割成多个段,并且每个段都会被存储在一个单独的文件中。因此,随着索引的增长,Elasticsearch需要打开和操作的文件数量会急剧增加。此外,Elasticsearch还涉及到大量的并发读写操作,每个操作都需要一个文件句柄。

但是Linux系统默认提供的文件句柄是1024个。

为了解决这个问题,可以通过配置:ml-search[limits.conf]文件来增加文件句柄的数量限制。limits.conf是一个配置文件,用于设置Linux系统中用户和进程的资源限制,包括文件描述符的数量。

将如下配置添加到/etc/security/limits.conf末尾即可:

elasticsearch - nofile655350

添加好后,如下图所示:

2.7 提升vm.max_map_count配置

Elasticsearch需要修改vm.max_map_count‌是因为这个参数限制了一个进程可以拥有的VMA(虚拟内存区域)数量,而Elasticsearch等存储系统使用MMAP(内存映射)技术来提高文件读取效率。如果vm.max_map_count的值设置得太低,可能会导致内存溢出错误,从而影响Elasticsearch的正常运行。因此,为了确保Elasticsearch能够高效运行,需要调整vm.max_map_count的值。

Elasticsearch使用MMAP技术来减少用户态内核态之间的数据拷贝,用内存读取取代I/O读取,从而提高文件读取效率。这种技术要求系统能够创建大量的虚拟内存区域,因此需要相应的vm.max_map_count值来支持。默认情况下,vm.max_map_count的值可能不足以满足Elasticsearch的需求,因此需要进行调整。

具体来说,部署Elasticsearch时,需要将vm.max_map_count的值调整到至少262144,以确保Elasticsearch能够正确运行。

进入/etc/sysctl.conf文件中,将配置vm.max_map_count=262144添加到文件末端即可:

vm.max_map_count=262144

如下图所示:

2.8 关闭 SELinux

如果不关闭SELinux,由于SELinux开启了安全模式,会导致Elasticsearch通过注册的服务开机启动可能报(code=exited, status=203/EXEC)错误。

临时关闭:

[root@localhost bin]# getenforce #查看selinux状态Enforcing[root@localhost bin]# setenforce 0 #临时关闭selinux[root@localhost bin]# getenforcePermissive

永久关闭:

[root@localhost bin]# vi /etc/selinux/configSELINUX=enforcing 修改为SELINUX=disabled#重启服务器生效

2.9 解压安装包到/usr/share/elasticsearch目录下

如果是ES应用索引数据分开部署,建议将ES应用部署到/usr/share/elasticsearch目录下。

2.10 ES配置修改

主要是对JVM内存以及集群相关的配置进行修改。

  1. JVM内存修改
    直接修改/usr/share/elasticsearch/config/jvm.options配置文件:
-Xms8g-Xmx8g

注意:-Xms-Xmx必须设置成一样,否则集群启动会报错。因为ES要考虑性能,设置成一样,是为了避免JVM内存频繁伸缩,导致不必要的性能开销。

  1. ES集群配置
    直接修改/usr/share/elasticsearch/config/elasticsearch.yml配置文件。

三台节点,除了node.namenetwork.host不一样,其它配置完全一样!如下代码所示,是节点es-node-a的配置:

# ======================== Elasticsearch Configuration =========================## NOTE: Elasticsearch comes with reasonable defaults for most settings.# Before you set out to tweak and tune the configuration, make sure you# understand what are you trying to accomplish and the consequences.## The primary way of configuring a node is via this file. This template lists# the most important settings you may want to configure for a production cluster.## Please consult the documentation for further information on configuration options:# https://www.elastic.co/guide/en/elasticsearch/reference/index.html## ---------------------------------- Cluster -----------------------------------## Use a descriptive name for your cluster:#cluster.name:sinhy-cloud-es-cluster## ------------------------------------ Node ------------------------------------## Use a descriptive name for the node:#node.name:"es-node-a"# 注意至少有两个具有选举master资格的节点node.roles:[master,data]# Add custom attributes to the node:##node.attr.rack: r1## ----------------------------------- Paths ------------------------------------## Path to directory where to store the data (separate multiple locations by comma):#path.data:/data## Path to log files:##path.logs: /path/to/logs## ----------------------------------- Memory -----------------------------------## Lock the memory on startup:##bootstrap.memory_lock: true## Make sure that the heap size is set to about half the memory available# on the system and that the owner of the process is allowed to use this# limit.## Elasticsearch performs poorly when the system is swapping the memory.## ---------------------------------- Network -----------------------------------## By default Elasticsearch is only accessible on localhost. Set a different# address here to expose this node on the network:##允许连接IPnetwork.host:172.16.10.50## By default Elasticsearch listens for HTTP traffic on the first free port it# finds starting at 9200. Set a specific HTTP port here:## 网页访问端口http.port:9200#集群间通信端口号,在同一机器下必须不一样,不同的机器,一般是9300transport.port:9300xpack.security.enabled:falsexpack.security.transport.ssl.enabled:false## For more information, consult the network module documentation.## --------------------------------- Discovery ----------------------------------## Pass an initial list of hosts to perform discovery when this node is started:# The default list of hosts is ["127.0.0.1", "[::1]"]## es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点# 集群成员discovery.seed_hosts:["172.16.10.50:9300","172.16.10.51:9300","172.16.10.52:9300"]## Bootstrap the cluster using an initial set of master-eligible nodes:# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举mastercluster.initial_master_nodes:["es-node-a","es-node-b","es-node-c"]http.cors.enabled:truehttp.cors.allow-origin:"*"## For more information, consult the discovery and cluster formation module documentation.## ---------------------------------- Various -----------------------------------## Allow wildcard deletion of indices:##action.destructive_requires_name: false

2.11 ES节点以服务注册方式启动

这个简单了,三台节点都分别这样操作即可:直接到目录/etc/systemd/system下,创建一个名为elasticsearch.service的服务文件,如下图所示:
编辑elasticsearch.service内容:

[Unit]Description=ElasticsearchAfter=network.target[Service]User=elasticsearchGroup=elasticsearchExecStart=/usr/share/elasticsearch/bin/elasticsearch[Install]WantedBy=multi-user.target

注册服务开机启动

systemctlenableelasticsearch.service

手动启动服务

systemctl start elasticsearch.service

查看ES服务状态

systemctl status elasticsearch.service

如果启动成功,状态会显示成如下图所示:

2.12 启动完成后进入展示界面

可用elasticsearch-head-master进行测试,也可以用Kibana进行测试,见本文下面,以下是带有kibana的数据索引:

3. IK分词器安装

到IK分词器官网下载地址去下载与ES安装程序相对应的版本:IK分词器下载

3.1 安装ik分词器

  1. 将下载好的zip包解压,生成一个ik文件夹

  2. 将ik文件夹移动到ES安装目录下的plugins文件夹下(每台ES节点都要执行相同的操作)

  3. 重启ES集群

3.2 自定义分词库

  1. 用vim在ik中的config目录中新建词库文件my_word.dic输入你定义的词保存。

  2. 修改ik中的config目录下面的IKAnalyzer.cfg.xml文件。

  3. 添加自定义分词需要重启ES。

4. kibana 的下载和安装

Kibana的官方下载地址:https://www.elastic.co/cn/downloads/kibana
这里以Linus版本安装部署为例,如下图:

4.1 Kibana配置文件修改

这个很简单,直接看代码吧:

server.port:5601server.host:"0.0.0.0"# 配置ES集群节点elasticsearch.hosts:["http://172.16.10.50:9200","http://172.16.10.51:9200","http://172.16.10.52:9200"]# 配置中文界面# Supported languages are the following: English (default) "en", Chinese "zh-CN", Japanese "ja-JP", French "fr-FR".i18n.locale:"zh-CN"

4.2 docker 简化部署

这里为了快速方便部署kibana,直接采用docker部署,如下docker启动脚本所示:

# 拉取镜像dockerpull docker.elastic.co/kibana/kibana:9.3.2# 删除日志目录rm-rf/data/docker-containers/kibana/logs# 创建日志目录mkdir-p/data/docker-containers/kibana/logschmod777-R/data/*dockerrun-d\--namekibana-9.3.2\--restart=always\--privileged=true\-p5601:5601\-eTZ="Asia/Shanghai"\-v/data/docker-containers/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml\-v/data/docker-containers/kibana/logs:/usr/share/kibana/logs\kibana:9.3.2

4.3 进入Kibana界面

5. 总结

以上就是关于Elasticsearch 集群 和 Kibana 最新版 (9.3.2) 的手动安装教程,怎么样?是不是很简单?看完后,你学会了吗?是否一次性成功!如果是,恭喜你,你认真阅读了本文!

http://www.cnnetsun.cn/news/1599708.html

相关文章:

  • LongCat动物百变秀:5分钟零基础教程,一句话让宠物照片大变身
  • 手机QQ图片传输背后的秘密:Wireshark+010Editor联合分析指南
  • 是德科技KEYSIGHT 16195B 阻抗分析仪校准件
  • 【Java虚拟线程性能实测白皮书】:20年JVM专家亲测12种场景,吞吐提升417%的临界阈值在哪?
  • Cursor MCP Server 配置实战:从零到一打通AI外部能力
  • RIS辅助太赫兹通信信道特征建模与MATLAB仿真分析
  • 如何突破思维导图协作瓶颈?云端协同与知识管理新方案
  • 中兴光猫配置解密:打破运营商技术壁垒的网络自主之路
  • Qwen3.5-9B运维手册:定期清理+备份策略+升级回滚标准化流程
  • 车载系统定制工具:释放Harman MIB 2.x系统潜能的技术方案
  • 开源工具Raspberry Pi Imager:零基础高效完成树莓派系统部署
  • 2026论文写作工具红黑榜:一键生成论文工具怎么选?别再瞎找了!
  • JXPagingView动画效果大全:Header高度变化、缩放动画等高级视觉效果实现
  • Ozone调试STM32的隐藏技巧:图形化监控变量、查看局部变量、命令调用函数
  • 3个突破限制步骤:res-downloader让网络资源获取变得无拘无束
  • Git-RSCLIP遥感图文检索实战教程:零样本分类+图文相似度一键部署
  • EasyExcel合并单元格避坑指南:从‘案例四’看复杂表头与数据联动合并的实现
  • 探秘书匠策AI:毕业论文写作的“全能魔法师”
  • Python: 多优化算法TSP求解方案,物流路径规划代码实践 - 附详尽注释及标准数据集
  • RetroArch缩略图问题全面修复指南:从黑屏到完美显示
  • Chord视频分析工具一键部署:支持ARM架构Jetson设备的适配方案
  • 告别混乱概念!一文搞懂Stripe的Payment Intent、Session与Charge,并用SpringBoot 3实现订阅支付
  • GLM-4.1V-9B-Base参数详解:temperature/top_p对图文问答稳定性影响
  • RK3588 PCIE设备全解析:从Realtek网卡到Intel SSD的地址映射与驱动加载
  • rPPG远程生理监测:5个简单步骤从零构建无接触健康分析系统
  • 避坑指南:C# FFT计算声音频谱时,采样率、汉明窗与复数处理的那些细节
  • 从工作流到超级智能体,Claude Code 重构AI应用底层逻辑
  • 【仅限首批读者】Java等保三级测评前72小时紧急加固包:含配置检查脚本、渗透测试用例、整改报告模板(2024新版)
  • 华为交换机Combo接口:从原理到实战的灵活组网指南
  • 终极LaTeX-PPT解决方案:3分钟告别PowerPoint公式排版噩梦