[源码解析] elastic search 8.0.0 的启动过程(三)

本文继续介绍elastic search启动流程中涉及的内容及自己的分析

1、创建SearchModule

和query、aggregations、 suggesters相关的模块。创建该模块的意思就是将es本身内置的一些term、phrase等查询方式和plugin中提供的与查询相关的规则都注册到es中。

内置的高亮规则及plugin中提供的高亮规则

内置的一些评分规则及plugin中提供的高亮规则

内置的对查询体的parse方式plugin中提供的,比如常见的WildcardQuery、TermQuery、BoolQuery等

内置的排序规则,比如根据字段排序,根据地理距离排序,根据评分高低排序

内置一些和启发式搜索相关的规则

内置一些聚合器,比如最大、最小、平均、求和等

内置子阶段分析,因为查询阶段其实被es分为了2大阶段fetch和query,而这里说的子阶段指的就是fetch阶段内的子阶段FetchSubPhase

内置的shape搜索,是和地理空间相关的一些概念

内置的间隔查询使用的一些规则

2、熔断服务相关CircuitBreakerService

为了在加载field data的时候起到保护作用,默认执行方式HierarchyCircuitBreakerService,

对于那些操作或者功能会有熔断的保护呢,共有5类,也可以理解为限制,到达了es内置的瓶颈后,就会熔断,

具体是哪些内容呢,我们举几个例子

这是request类型中的一个

 public static final Setting<ByteSizeValue> REQUEST_CIRCUIT_BREAKER_LIMIT_SETTING =
        Setting.memorySizeSetting("indices.breaker.request.limit", "60%", Property.Dynamic, Property.NodeScope);

这些熔断的阈值不是针对单个索引的,而是针对集群中的单个节点的。

3、GatewayModule

这个类的作用首先和网关无关,至少和微服务中的网关没有任何关系。

DanglingIndicesState是其中一部分,DanglingIndices指的是当一个node想加入一个集群时,但是这个node中的数据在这个集群中不存在,这时我们需要将数据导入,主要是为了解决数据丢失的问题。最终的目的是为了导入node中的数据到集群中。至于数据之前为什么不存在不是它重点关注的。

还要另外一部分是local gateway,指的是它会存储集群的状态,当集群重启的时候为整个集群中的node共享数据。

4、IndexStorePlugin

每一个分片在存储的时候都要新建一个文件夹

每一个分片在存储的时候都要新建一个recovery state ,为分片恢复的时候做准备

5、创建系统索引

共9种

原来这些索引都属于系统内置索引,只有es和相应的中间价配合使用的时候才会起作用

6、BatchedRerouteService

将request请求重新路由。会有很多种原因导致集群状态发生变化。BatchedRerouteService 主要的应用场景是master node重新选举了

未完待续

猜你喜欢

转载自blog.csdn.net/weixin_39394909/article/details/108426133