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类比,差不多的意思。