1.es大致介绍
分布式搜索引擎,底层为lucene,核心思想多台机器启动多个es进程构成集群.
index->type->mapping->document->field
shard
横向扩展
提高性能
primary shard-> replica shard
高可用
2.写入原理,查询原理
写入
1.客户端选择一个Node发送请求,coordinating node
2.coordinating node负责路由,发送到对应node
3.primary shard同步到replica node
4.如果都完毕,响应结果返回给client
读取
1.每个doc有一个id,通过doc_id进行hash,找到指定shard的数据,进行查询
2.coordinating node对doc_id进行hash路由,请求转发到对应node,然后随机轮询算法,在primary shard以及replica中随机选一个,读请求负载均衡.
3.接受请求的node返回document给coordinating node
4.coordinating node返回给客户端
3.搜索原理
es 最强大的是做全文检索
java真好玩儿啊
java好难学啊
j2ee特别牛
你根据java关键词来搜索,将包含java的document 给搜索出来。
es就会给你返回:java真好玩儿啊,java好难学啊。
1.客户端发送请求到一个 coordinate node。
2.协调节点将搜索请求转发到所有的 shard 对应的 primary shard 或 replica shard,都可以。
3.query phase:每个 shard 将自己的搜索结果(其实就是一些 doc id)返回给协调节点,由协调节点进行数据的合并、排序、分页等操作,产出最终结果。
4.fetch phase:接着由协调节点根据 doc id 去各个节点上拉取实际的 document 数据,最终返回给客户端。