ES

???

Posted by ZY on August 26, 2019

now

完善每个小节 单独成篇

写流程

http 请求

hash 确定要放到哪个分片,并确定这个分片的主分片是哪个(如何知道?)

倒排索引写入:压缩 磁盘写入

复制到副本分片(写一致性的策略,默认 quorum)

可以动态增加主分片数吗?

es没有提供 api, 但是可以手动操作

5.0 出了个 shrink API https://www.elastic.co/blog/resizing-elasticsearch-shards-for-fun-and-profit

search 流程

get vs search

Query阶段:

请求打向 Node 3

Node 3 将请求转发到所有分片上(主分片和副本分片只有一个分片会被转发)

每个分片进行本地查询,按照相关度评分,返回有序队列给协调节点 Node 3

Fetch:根据文档 ID,获取文档内容

协调节点 Node 3 汇总其他节点返回的 文档 ID,确定最终需要返回的 文档 ID 列表

向相关节点发生 GET 请求,获取这些文档 ID 对应的文档数据

等待所有数据的返回

返回给客户端

?深度分页

Discover

没有真正意义的 master:请求发给任意一个节点,节点都能够知道要把请求转发给谁

资料

​ https://www.elastic.co/guide/en/elasticsearch/reference/6.4/modules-discovery-zen.html

​ 《实战》9.2

没有采用注册中心,而是用比较传统的:Multicast discovery & unicast discovery 组播和单播(像 dubbo 一样,也支持这种不需要其他中间件就可以实现的服务发现机制)

master 的职责

选主

对等架构?master 跟其他架构的master不一样?

《实战》9.2

《源码》选主章节

调优 & 最佳实践

深度分页

可以动态增加主分片数吗?

主分片数量如何确定?

技术局限:数量级、适用场景(有赞预约?)

源码

参考