【Elasticsearch】同一台服务器部署集群
- 1. 同一台服务器搭建ES集群
- 2. 配置不同的node节点
- 3. ES集群中安装IK分词器
- 4. 启动es集群
- 5. Kibana访问集群
- 6. es-head
- 7. 集群中创建索引
- 7.1 什么是分片以及分片的好处
- 7.2 副本(Replication)
- 7.3 通过es-head创建索引
- 8. 集群工作原理
- 9. 在Java中操作ES的客户端
1. 同一台服务器搭建ES集群
2. 配置不同的node节点
第一台机器 elasticsearch.yml
其他两台机器需要修改的地方
3. ES集群中安装IK分词器
在9201的包下面的plugins里面的ik分词器解压,解压出一个elasticsearch文件夹,将elasticsearch文件夹改名为analysis-ik的文件夹
然后再把这个analysis-ik的文件夹复制到9202、9203各一份
4. 启动es集群
- es启动
windows操作系统可以直接启动elasticsearch.bat
centos or mac 直接运行elasticsearch
脚本 - 集群启动
mac 下的集群启动,三台机器都运行elasticsearch
脚本
5. Kibana访问集群
在第一台机器的kibana.yml
中修改为9201
运行kibana
6. es-head
连接的时候9201、9202、9203都可以
7. 集群中创建索引
集群中创建索引与单台机器创建索引是一样的。
分片的数量:默认是5,这里设置为3
分片是指 将数据拆分成多个部分,并分别存储在不同的服务器或节点上,从而实现数据水平扩展(scale out)。
副本数量:这里设置为1,每个分片一个备份,一个原始数据共计2份。
7.1 什么是分片以及分片的好处
分片(Sharding)
概念:分片是指 将数据拆分成多个部分,并分别存储在不同的服务器或节点上,从而实现数据水平扩展(scale out)。
- 特点
数据拆分:每个分片存储不同的数据子集,不同分片之间的数据通常不重复。
提高可扩展性:当数据量过大时,可以通过增加分片来分担存储和查询压力。
减少单点瓶颈:每个分片可以独立处理查询,提高整体性能。 - 示例
假设有一个包含 1 亿条用户数据 的数据库,直接存储在一个节点上会导致性能瓶颈。
采用分片策略,可以 按照用户 ID 进行范围分片:
服务器 A 存储 ID 1-30,000,000 的用户数据
服务器 B 存储 ID 30,000,001-60,000,000 的用户数据
服务器 C 存储 ID 60,000,001-100,000,000 的用户数据
这样,每个服务器只处理自己的一部分数据,整体性能更高。
7.2 副本(Replication)
概念:副本是指复制数据的多个拷贝,并存储在不同的服务器或节点上,以提高系统的高可用性和 数据冗余度。
- 特点
数据一致性:所有副本存储的是相同的数据,并通过同步机制保持一致。
提高高可用性:当一个节点故障时,其他副本可以继续提供服务。
读写分离:主副本负责写入,其他副本可以分担读取压力,提高查询性能。 - 示例
一个数据库采用 主从复制(Master-Slave Replication):
主数据库(Master) 负责写入操作,并将数据同步到多个 从数据库(Slaves)。
读取请求可以由多个从库分担,从而减少主库压力,提高查询效率。
如果 主库宕机,可以通过 选举 让某个从库升级为新的主库,保证系统的高可用性。
7.3 通过es-head创建索引
这里注意一个问题:
8. 集群工作原理
shard分片
9. 在Java中操作ES的客户端