elasticsearch 索引过程

本文详细介绍了Elasticsearch中索引数据的过程,包括IndexRequest的处理、索引请求的分发、文档结构的创建与验证等关键步骤,并探讨了不同索引操作类型的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

索引过程

 

1 IndexRequest

 

wKioL1muDdLTji79AAAnGz-DNzg691.png-wh_50

 

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

 

2TransportIndexAction

wKioL1muDhfAHjJAAABN_PUlrWw347.png-wh_50

 

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

 

wKioL1muDw6gBbY1AACH81v0LZE926.png-wh_50

 

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

wKioL1muD3KTfoNIAACXNbnI2j8430.png-wh_50

 

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

 

4.创建索引文档结构体

wKiom1muD8Sj2QlDAADUo4MeRKA808.png-wh_50

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

wKiom1muD_SRkolsAAB9VVPma4w334.png-wh_50

 

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

wKioL1muD_yDTxCzAABO-QsR98g962.png-wh_50

 

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

wKiom1muEFyRZ10iAABZkSNJF_o321.png-wh_50

 

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

wKiom1muEI6iVAAmAABTYe0Sy_s388.png-wh_50

 

8. 如果是创建

wKioL1muEJvBclZ0AABVkDZIhZs955.png-wh_50

 

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

wKiom1muEOWwCLY6AAAmH5axqME711.png-wh_50

 

 

9.返回到主方法

wKioL1muEPrhIBwJAADHdLcTagc220.png-wh_50

 

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

 

wKioL1muESuB61i2AAA-5xiSOK8277.png-wh_50

 

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

 

10. 调用创建文档接口

wKioL1muEViAgr48AAC_OjiA3Dg863.png-wh_50

 

 

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

wKioL1muEYeRlj8HAABgYDbKBCw237.png-wh_50

 

12 调用luence


wKiom1muEkDyIshXAABiGthTxmI906.png-wh_50

 wKioL1muElzjVbilAABKgv7e6mw490.png-wh_50


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

 

wKiom1muEqexJ7Y1AACTNinwfxY811.png-wh_50

 

14 增加其实也是更新操作

wKioL1muErWyTRg6AACpwQun8Kk208.png-wh_50

 

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

 

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

wKioL1muEuyQUv8rAABS8rsX3XI458.png-wh_50

 

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



本文转自whk66668888 51CTO博客,原文链接:http://blog.51cto.com/12597095/1962754
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值