1、倒排索引:Lucene检索库

2、基于Lucerne 的分布式搜索引擎elasticSearch

核心思想就是在多台机器上启动多个es进程实例,组成一个es集群。

(1)搞一个索引(索引是es存储数据的基本单位,创建索引的时候可以设置分片的数量),将索引拆分成多个shard分片,每个shard存储部分数据:

Index-> type -> mapping -> document -> field

index相当于mysql的一张表

type不能跟mysql做对比,一个索引里有多个type,每个type字段差不多,有一些略微差别。比如订单索引下有两个type,一个对应的是实物商品订单,一个是虚拟商品订单

mapping:每个type有一个mapping,代表type的表结构定义,每个字段名称、类型等

document:相当于mysql中表的一行,往index的一个type里写的一条数据,就是一个document

field:每个document有多个field,代表了document中一个字段的值

(2)每个shard数据都有多个备份,即每个shard有一个primary shard负责写入数据,还有几个replica shard将数据同步过来。

(3)通过这个replica方案,每个shard都有多个备份,若某个机器宕机了,数据副本在其他机器上有备份,实现了高可用

(4)集群的多个节点,会自动选举一个节点为master节点,负责比如维护索引元数据,负责切换primary shard 和replica shard身份,若master节点宕机了,es会从剩下的节点中选举出新的master节点,且新节点上若有宕机节点上的shard的replica,则这个replica会变成该shard的新primary shard。当下次宕机的节点恢复了,那旧的master节点会被取消掉,且将原shard的primary shard标记成replica shard

 

备注:replica副本思想可以跟Kafka类比,差不多的意思。