索引过程

 

1 IndexRequest

 

elasticsearch 索引过程

 

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

 

2TransportIndexAction

elasticsearch 索引过程

 

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

 

elasticsearch 索引过程

 

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

elasticsearch 索引过程

 

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

 

4.创建索引文档结构体

elasticsearch 索引过程

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

elasticsearch 索引过程

 

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

elasticsearch 索引过程

 

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

elasticsearch 索引过程

 

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

elasticsearch 索引过程

 

8. 如果是创建

elasticsearch 索引过程

 

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

elasticsearch 索引过程

 

 

9.返回到主方法

elasticsearch 索引过程

 

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

 

elasticsearch 索引过程

 

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

 

10. 调用创建文档接口

elasticsearch 索引过程

 

 

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

elasticsearch 索引过程

 

12 调用luence


elasticsearch 索引过程

 elasticsearch 索引过程


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

 

elasticsearch 索引过程

 

14 增加其实也是更新操作

elasticsearch 索引过程

 

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

 

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

elasticsearch 索引过程

 

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



本文转自whk66668888 51CTO博客,原文链接:http://blog.51cto.com/12597095/1962754

相关文章: