Elasticsearch--集群,节点,索引,分片

这一篇主要介绍下Elasticsearch的基础概念信息,分别是集群,节点,分片。

什么是集群?

集群呢,顾名思义,就是一个大的集合,这个集合里面包含很多基友相同属性的元素。对于Elasticsearch来说,一个集群就是多个Elasticsearch实例的集合。每个实例可以通过集群名和ip配置互相发现,在同一集群下的所有实例就构成了一个Elasticsearch集群,单个实例也可以构成一个集群。集群也是Elasticsearch实现分布式系统的重要操作。

什么是节点?

节点,我们可以理解为是一个Elasticsearch实例,一个节点就包含了Elasticsearch所有基本操作,但是一个节点并不意味着就是一台机器,一台机器上可以起多个节点。所以,如果一台机器的配置够豪华,就可以在这个机器上起多个节点。但是,这种情况仅适合做测试,不适合做项目,因为这种情况的容错率太低了,所有数据都分布在一台机器上,如果机器发生故障,依赖Elasticsearch的所有操作都会挂掉。

什么是索引?

索引,索引可以近似的理解为数据库中的一个表。我个人认为索引主要可以分为两部分,setting和mapping

setting主要有分片和分析器等,分片我们下面会讲。分析器就是对存入数据进行分析的一个结构,这个结构我们可以自定义,让它里面包含不同的分词器得到不同的倒排索引。

mapping主要就是定义了这个索引中有哪些字段,比如id,name,sex等。并且规定了每个字段的类型,使用的分词器等。

简言之,索引就是具有类似特性的文档的集合。

什么是分片

分片,众所周知,Elasticsearch底层是基于Lucene。每一个节点是一个Elasticsearch的实例,每一个分片就是一个Lucene实例。每一个分片包含了Lucene的所有基本功能。当一个索引在创建时,我们需要指定他的分片数量,分片又分为主分片和副本分片,主分片和副本分片的关系是,当存储一个文档的时候,Elasticsearch通过计算,存入到相应的主分片上,然后同步到其副本中,副本分片可以看作是主分片的冗余结构。但是副本分片不仅仅是只对主分片进行冗余操作,还可以进行查询,计算等分担其主分片的压力。

分片存在的意义,首先,每个分片有固定的存储上限,但是具体能存多少数据取决于每个节点上的分片数量和机器具体的物理结构。一个集群中所有分片均匀得分布在不同的节点上,即提高容错性的同时又提高了存储性能,当需要扩容的时候只要水平方向添加一个节点进入集群,集群就会自动吧分片均匀的分配给每个节点,即降低了单个节点的消耗,又增加了集群的负载均衡。

 

你可能感兴趣的:(Elasticsearch,集群,节点,索引,分片)