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节点