ElasticSearch 源码分析21 CreateIndex

先看创建索引的方法入口 TransportCreateIndexAction

   

1.从创建索引请求request中获取cause,如果长度length == 0,那么就设置默认值api

2.然后就根据request的index 来解析出indexName

3.然后包装成为一个updateRequest

4.继续调用createIndexService的createIndex方法,来创建索引

5.创建索引调用onlyCreateIndex,并且有对应的创建回调处理

6.提交创建索引的任务

7.调用execute方法执行创建索引

8.先调用validate校验,然后再检验alias别名

9.根据请求获取索引模板templates

10.循环request请求的mappings,然后解析到之前新建的mappings中

11.继续解析request请求的customs

12.然后进行templates和request中的mappings进行合并

13.处理请求request的settings,可以覆盖模板templates

14.根据索引的配置idxSettings,获取routingNumShards

15.本地master先创建一个索引,然后增加mappings

16.然后使用实际的source,更新mappings,最后调用

indexMetaData = indexMetaDataBuilder.build();

  创建出索引元数据indexMetaData,再创建出newMetaData

17.再构建出updatedState,获取路由表routingTable

18.然后调用reroute来分配

19.根据clusterState获取路由节点routingNodes

20.继续调用reroute

21.分配可用的node节点

猜你喜欢

转载自blog.csdn.net/kuaipao19950507/article/details/106584268