集群管理
ES通常以集群方式工作,这样做不仅能够提高 ES的搜索能力还可以处理大数据搜索的能力,同时也增加了系统的容错能力及高可用,ES可以实现PB级数据的搜索。
下图是ES集群结构的示意图:
分片
主节点
一个集群中会有一个或多个主节点,主节点的作用是集群管理,比如增加节点,移除节点等,主节点挂掉后ES会重新选一个主节点.
节点转发
每个节点都知道其它节点的信息,我们可以对任意一个v发起请求,接收请求的节点会转发给其它节点查询数据.
节点的三个角色
主节点
master节点主要用于集群的管理及索引 比如新增节点、分片分配、索引的新增和删除等。
数据节点
data 节点上保存了数据分片,它负责索引和搜索操作。
客户端节点
client 节点仅作为请求客户端存在,client的作用也作为负载均衡器,client 节点不存数据,只是将请求均衡转发到其它节点。
搭建集群
解压 es 为两份
配置文件elasticsearch.yml
es1
cluster.name: xuwenxiang
node.name: xwx_node_1
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9301
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9300", "0.0.0.0:9301"]
discovery.zen.minimum_master_nodes: 1
node.ingest: true
bootstrap.memory_lock: false
node.max_local_storage_nodes: 2
path.data: D:安装程序es集群es1elasticsearch-6.2.3elasticsearch-6.2.3data
path.logs: D:安装程序es集群es1elasticsearch-6.2.3elasticsearch-6.2.3logs
http.cors.enabled: true
http.cors.allow-origin: /.*/
es2
cluster.name: xuwenxiang
node.name: xwx_node_2
network.host: 0.0.0.0
http.port: 9201
transport.tcp.port: 9300
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9300", "0.0.0.0:9301"]
discovery.zen.minimum_master_nodes: 1
node.ingest: true
bootstrap.memory_lock: false
node.max_local_storage_nodes: 2
path.data: D:安装程序es集群es2elasticsearch-6.2.3elasticsearch-6.2.3data
path.logs: D:安装程序es集群es2elasticsearch-6.2.3elasticsearch-6.2.3logs
http.cors.enabled: true
http.cors.allow-origin: /.*/
报错
with the same id but is a different node instance :具有相同的ID但却是不同的节点实例
删除es文件夹下data文件夹下的节点数据,这种情况可能是直接copy了原来的es包,所以data里的节点数据一样
测试分片
首先往9200节点插入数据
集群的健康
通过访问 GET /_cluster/health 来查看Elasticsearch 的集群健康情况。
用三种颜色来展示健康状态: green 、 yellow 或者 red 。
- green:所有的主分片和副本分片都正常运行。
- yellow:所有的主分片都正常运行,但有些副本分片运行不正常。
- red:存在主分片运行不正常。