索引过程

 

1 IndexRequest

 

es 创建索引 text字段映射 es创建索引过程_大数据

 

UUID工具自动生成一个uuid,代码在IndexRequest的process方法内。

 

2TransportIndexAction

es 创建索引 text字段映射 es创建索引过程_取模_02

 

根据索引数据的id、类型以及索引分片信息进行哈希取模,确定把该条数据分配到那个分片。

 

es 创建索引 text字段映射 es创建索引过程_es 创建索引 text字段映射_03

 

3. 并找到数据要分配到的分片的主分片,先把索引请求提交到主分片处理

es 创建索引 text字段映射 es创建索引过程_取模_04

 

路由校验,然后获取主share的信息,executeIndexRequestOnPrimary是最重要的方法

 

4.创建索引文档结构体

es 创建索引 text字段映射 es创建索引过程_大数据_05

判断索引操作的类型,索引操作有两种,一种是INDEX一种是CREATE

es 创建索引 text字段映射 es创建索引过程_取模_06

 

5. 如果不是主分片,抛出异常

es 创建索引 text字段映射 es创建索引过程_数据_07

 

6. 判断文档是否自动创建,如果是开始解析文档结构

es 创建索引 text字段映射 es创建索引过程_取模_08

 

7. 如果是动态文档,增加mapping映射,否则返回Index对象

es 创建索引 text字段映射 es创建索引过程_es 创建索引 text字段映射_09

 

8. 如果是创建

es 创建索引 text字段映射 es创建索引过程_自动生成_10

 

与上面类似,只是多了一个id

es 创建索引 text字段映射 es创建索引过程_自动生成_11

 

 

9.返回到主方法

es 创建索引 text字段映射 es创建索引过程_自动生成_12

 

如果是需要创建文档结构,先创建文档结构

 

es 创建索引 text字段映射 es创建索引过程_大数据_13

 

创建完后,二次校验一下,是否创建成功

 

10. 调用创建文档接口

es 创建索引 text字段映射 es创建索引过程_取模_14

 

 

11. 检验是否可写状态 刷新最后更新时间,并启动状态检查

es 创建索引 text字段映射 es创建索引过程_数据_15

 

12 调用luence


es 创建索引 text字段映射 es创建索引过程_取模_16

 

es 创建索引 text字段映射 es创建索引过程_数据_17


13 如果是创建 addDocuments,如果是更新updateDocuments。

 

es 创建索引 text字段映射 es创建索引过程_自动生成_18

 

14 增加其实也是更新操作

es 创建索引 text字段映射 es创建索引过程_es 创建索引 text字段映射_19

 

15. 剩下是记录log和一些统计信息

 

Translog.LocationtranslogLocation =translog.add(new Translog.Index(index));

es 创建索引 text字段映射 es创建索引过程_取模_20

 

16. 里面还有很多锁,还没有看懂!!!


原文链接:http://blog.51cto.com/12597095/1962754