闲话ElasticSearch(一)

什么是ElasticSearch

ElasticSearch 设计的理念就是分布式搜索引擎,底层其实还是基于 lucene 的。核心思想就是在多台机器上启动多个 es 进程实例,组成了一个 es 集群。

ElasticSearch构成

索引index

ElasticSearch 中存储数据的基本单位是索引index,要在 ElasticSearch 中存储一些数据,你就应该在 ElasticSearch 中创建一个索引,所有的数据就都写到这个索引里面去,一个索引差不多就是相当于是 mysql 里的一张表。

type

一个 索引 里可以有多个 type,每个 type 的字段都是差不多的,但是有一些略微的差别。

打个比方有一个订单的index,其中有些订单是实物商品的订单,有些订单是虚拟商品的订单。就两种订单大部分字段是一样的,但是少部分字段可能有略微的一些差别。会在订单 index 里,建两个 type,一个是实物商品订单 type,一个是虚拟商品订单 type。

你可以认为 index 是一个类别的表,具体的每个 type 代表了 mysql 中的一个表。每个 type 有一个 mapping,如果你认为一个 type 是具体的一个表,index 就代表多个 type 同属于的一个类型,而 mapping 就是这个 type 的表结构定义

document

往 index 里的一个 type 里面写的一条数据,叫做一条 document,一条 document 就代表了 mysql 中某个表里的一行,每个 document 有多个 field,每个 field 就代表了这个 document 中的一个字段的值。

ElasticSearch高可用

索引可以拆分成多个 shard,每个 shard 存储部分数据。

拆分多个 shard 可以支持横向扩展,比如你数据量是 3T,3 个 shard,若现在数据量增加到 4T,重新建一个有 4 个 shard 的索引,将数据导进去就可以了。

同时可以提高性能,数据分布在多个 shard,即多台服务器上,所有的操作,都会在多台机器上并行分布式执行,提高了吞吐量和性能。

shard 的数据实际是有多个备份,就是说每个 shard 都有一个 primary shard,负责写入数据,但是还有几个 replica shardprimary shard 写入数据之后,会将数据同步到其他几个 replica shard 上去。每个 shard 的数据都有多个备份保证高可用,如果某个机器宕机了,还有别的数据副本在别的机器上呢。

es 集群多个节点,会自动选举一个节点为 master 节点,这个 master 节点其实就是干一些管理的工作的,比如维护索引元数据、负责切换 primary shard 和 replica shard 身份等。要是 master 节点宕机了,那么会重新选举一个节点为 master 节点。

如果是非 master节点宕机了,那么会由 master 节点,让那个宕机节点上的 primary shard 的身份转移到其他机器上的 replica shard。接着你要是修复了那个宕机机器,重启了之后,master 节点会控制将缺失的 replica shard 分配过去,同步后续修改的数据之类的,让集群恢复正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值