集群结构
ES通常以集群方式工作,这样做不仅能够提高 ES的搜索能力还可以处理大数据搜索的能力,同时也增加了系统的容错能力及高可用。
ES集群结构的示意图
此处的设置为:每个主分片有两个副本, 如果某个节点挂了也不怕,比如节点1挂了,我们可以查询位于节点3和节点3上的副本0
添加文档过程
(1)假设用户把请求发给了节点1
(2)系统通过余数算法得知这个’文档’应该属于主分片2,于是请求被转发到保存该主分片的节点3
(3)系统把文档保存在节点3的主分片2中,然后将请求转发至其他两个保存副本的节点。
查询文档过程:
(1) 请求被发给了节点1
(2)节点1计算出该数据属于主分片2,这时候,有三个选择,分别是位于节点1的副本2, 节点2的副本2,节点3
的主分片2, 假设节点1负载均衡,采用轮询的方式,选中了节点2,把请求转发。
(3) 节点2把数据返回给节点1, 节点1 最后返回给客户端。
创建节点
修改第一台节 elasticsearch.yml
拷贝一台
启动 Elasticsearch-2 修改网关ip
这里用的 192.168.226.206 - 207
修改elasticsearch.yml内容
删除节点2的data目录
查看集群健康状态
这里使用的kibana,Elasticsearch-head
启动服务 浏览器进入kibana:127.0.0.1:5601
创建索引库
PUT /java01
{
"settings": {
"number_of_shards": 2, #分片
"number_of_replicas": 1 #备份
}
}
查询当前集群的健康信息
GET /_cluster/health
结果
status:用三种颜色来展示健康状态
green:索引库的每个 primary shard 和 replica shard 都是 active 的 【正常状态】
yellow:索引库的每个 primary shard 都是 active 的,但部分的 replica shard 不是 active 的,如单节点创建,备份分配 【备份分配不可用,数据完整】
red:不是所有的 primary shard 都是 active 状态的。【主分片不可用,数据不完整】
浏览器 127.0.0.1:9100 输入地址连接 查看集群状况和分片
关闭节点2,测试集群状态
这里有备份 数据完整但是警告了,备份分片不可用
启动节点2
删除库重新创建
#删除
DELETE /java01
# 创建
PUT /java01
{
"settings": {
"number_of_shards": 2,
"number_of_replicas": 0
}
}
此时没有备份分片
关闭节点2,此时红色,数据已经不完整了