博主简介CSDN博客专家「历代文学网」PC端可以访问https://lidaiwenxue.com/#/?__c1000移动端可关注公众号 “心海云图” 微信小程序搜索“历代文学”总架构师首席架构师也是联合创始人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 配合使用场景Elasticsearch和Kibana是经常被用于以下几种场景日志管理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为候选主节点数/21可以确保在大多数情况下没有足够的master候选节点进行选举从而避免脑裂的可能性。此外至少需要3个节点也是基于集群选举算法的奇数法则这是为了保证在集群中任一节点故障时仍然能够通过多数决策来维持集群的正常运作。在Elasticsearch集群中节点可以承担不同的角色包括master主节点、data数据节点、client客户端节点等。主节点负责处理集群的管理任务如节点发现、故障检测等数据节点则负责数据的存储和处理客户端节点则处理来自外部的请求。通过合理配置这些节点的角色和数量可以提高集群的性能和可用性。例如为了实现高可用性和容错性一般建议每个角色使用独立的节点但在资源有限的情况下也可以通过配置节点的不同角色如在一台机器上同时运行master和data节点来模拟多节点环境这种做法通常被称为搭建伪集群。在本教程中准备了三台ES节点es-node-a172.16.10.50es-node-b172.16.10.51es-node-c172.16.10.522.3 节点禁用防火墙请将ES所有节点全部禁用防火墙避免集群节点间出现通信故障以及造成应用程序无法访问的问题分别执行如下命令systemctl stop firewalld systemctl disable firewalld2.4 创建elasticsearch用户和用户组Elasticsearch需要单独创建用户和用户组主要是出于安全性和管理的考虑。‌首先Elasticsearch作为一个强大的搜索引擎能够独立接受用户输入的脚本因此为了系统的安全性需要单独建立一个用户来运行Elasticsearch以避免潜在的安全风险。使用专门的运行用户可以限制Elasticsearch的访问权限减少被恶意利用的可能性‌。执行以下命令即可完成Elasticsearch用户和用户组的创建groupadd-relasticsearch\useradd-r-gelasticsearch elasticsearch2.5 目录权限设置假设安装目录是/usr/share/elasticsearch/Elasticsearch‌安装目录权限的设置分为两个场景es应用安装目录和索引存放目录部署在同一个根目录下。用root账户登录并执行如下命令# es安装目录权限设置chown-Relasticsearch /usr/share/elasticsearchchgrp-Relasticsearch /usr/share/elasticsearches应用安装目录和索引存放目录部署在不同一个根目录下。# es安装目录权限设置chown-Relasticsearch /usr/share/elasticsearchchgrp-Relasticsearch /usr/share/elasticsearch# es 数据索引目录权限设置chgrp-Relasticsearch /datachown-Relasticsearch /data2.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_count262144添加到文件末端即可vm.max_map_count262144如下图所示2.8 关闭 SELinux如果不关闭SELinux由于SELinux开启了安全模式会导致Elasticsearch通过注册的服务开机启动可能报(codeexited, status203/EXEC)错误。临时关闭[rootlocalhost bin]# getenforce #查看selinux状态Enforcing[rootlocalhost bin]# setenforce 0 #临时关闭selinux[rootlocalhost bin]# getenforcePermissive永久关闭[rootlocalhost bin]# vi /etc/selinux/configSELINUXenforcing 修改为SELINUXdisabled#重启服务器生效2.9 解压安装包到/usr/share/elasticsearch目录下如果是ES应用和索引数据分开部署建议将ES应用部署到/usr/share/elasticsearch目录下。2.10 ES配置修改主要是对JVM内存以及集群相关的配置进行修改。JVM内存修改直接修改/usr/share/elasticsearch/config/jvm.options配置文件-Xms8g-Xmx8g注意-Xms和-Xmx必须设置成一样否则集群启动会报错。因为ES要考虑性能设置成一样是为了避免JVM内存频繁伸缩导致不必要的性能开销。ES集群配置直接修改/usr/share/elasticsearch/config/elasticsearch.yml配置文件。三台节点除了node.name和network.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: false2.11 ES节点以服务注册方式启动这个简单了三台节点都分别这样操作即可直接到目录/etc/systemd/system下创建一个名为elasticsearch.service的服务文件如下图所示编辑elasticsearch.service内容[Unit]DescriptionElasticsearchAfternetwork.target[Service]UserelasticsearchGroupelasticsearchExecStart/usr/share/elasticsearch/bin/elasticsearch[Install]WantedBymulti-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分词器将下载好的zip包解压生成一个ik文件夹将ik文件夹移动到ES安装目录下的plugins文件夹下每台ES节点都要执行相同的操作重启ES集群3.2 自定义分词库用vim在ik中的config目录中新建词库文件my_word.dic输入你定义的词保存。修改ik中的config目录下面的IKAnalyzer.cfg.xml文件。添加自定义分词需要重启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-CN4.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\--restartalways\--privilegedtrue\-p5601:5601\-eTZAsia/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.24.3 进入Kibana界面5. 总结以上就是关于Elasticsearch 集群 和 Kibana 最新版 9.3.2 的手动安装教程怎么样是不是很简单看完后你学会了吗是否一次性成功如果是恭喜你你认真阅读了本文