集群
一个集群是有多个节点组成的集合,集群有一个唯一的名称作为标识,节点通过设置集群名称就可以加入相应的集群。
config/elasticsearch.yml配置信息如下:
cluster.name: es-6.5.2-test #集群唯一标识名称,注意唯一性免得跟别人的集群混在一起
node.name: node-es-101 #节点名字
network.host: 0.0.0.0 #修改一下ES的监听地址,这样别的机器也可以访问
http.port: 9200 #端口号,默认就好
# 增加新的参数,这样head插件可以访问es
http.cors.enabled: true
http.cors.allow-origin: "*"
节点
一个节点就是一个 Elasticsearch 服务(实例),可以实现存储数据,索引并且搜索的功能。每个节点都有一个唯一的名称作为身份标识,并通过设置集群名称加入到集群。
索引
Elasticsearch 中的索引就是是一种数据存储集合,用于存储文档数据。类似于MYSQL的database数据库的概念。
分片
将一个索引的数据划分多个分片,默认5个。分片数据可以分布于集群的各个节点。如下图:
分片的主要有2个作用:
- 水平划分数据;
- 多个分片并行执行,提供性能和吞吐量
分片包括:主分片和副本分片,副本分片作用
- 高可用性: 副本分片作为数据备份,当某个主分片发生故障时,副本分片能够成为新的主分片,保证服务的可用性。
- 提高性能: 副本分片本身也是一个功能齐全的独立的分片(所以才能够随时取代故障的主分片),当有查询请求时,既可以在主分片中完成查询,也可以在副本分片中完成查询,当然数据添加、更新的操作只能在主分片中完成。
副本分片与主分片需要分配在不同的节点上,一是为了更好的均衡负载,不同节点上二是节点发生故障时,主分片和副本分片一起故障,没法保证高可用性。所以 Elasticsearch 集群最好要有 2 个节点或以上。
一个索引默认有 5 个主分片,每个主分片默认有 1 个副本分片,即创建一个索引默认会有 10 个分片。
更新、索引、删除文档都是写操作,这些操作必须在primary shard完全成功后才能拷贝至其对应的replicas上,默认情况下主分片等待所有备份完成索引后才返回客户端
Elasticsearch基础知识——集群、节点、索引、分片