elasticsearch 索引过程
索引过程1 IndexRequest
https://s3.运维网.com/wyfs02/M02/A4/93/wKioL1muDdLTji79AAAnGz-DNzg691.png-wh_500x0-wm_3-wmp_4-s_2504146202.png
UUID工具自动生成一个uuid,代码在IndexRequest的process方法内。
2TransportIndexAction
https://s2.运维网.com/wyfs02/M00/A4/93/wKioL1muDhfAHjJAAABN_PUlrWw347.png-wh_500x0-wm_3-wmp_4-s_2356505179.png
根据索引数据的id、类型以及索引分片信息进行哈希取模,确定把该条数据分配到那个分片。
https://s5.运维网.com/wyfs02/M02/A4/93/wKioL1muDw6gBbY1AACH81v0LZE926.png-wh_500x0-wm_3-wmp_4-s_4139209379.png
3. 并找到数据要分配到的分片的主分片,先把索引请求提交到主分片处理
https://s1.运维网.com/wyfs02/M02/A4/93/wKioL1muD3KTfoNIAACXNbnI2j8430.png-wh_500x0-wm_3-wmp_4-s_2613939314.png
路由校验,然后获取主share的信息,executeIndexRequestOnPrimary是最重要的方法
4.创建索引文档结构体
https://s5.运维网.com/wyfs02/M01/05/E2/wKiom1muD8Sj2QlDAADUo4MeRKA808.png-wh_500x0-wm_3-wmp_4-s_1645010620.png
判断索引操作的类型,索引操作有两种,一种是INDEX一种是CREATE
https://s4.运维网.com/wyfs02/M02/05/E2/wKiom1muD_SRkolsAAB9VVPma4w334.png-wh_500x0-wm_3-wmp_4-s_277495641.png
5. 如果不是主分片,抛出异常
https://s2.运维网.com/wyfs02/M02/A4/93/wKioL1muD_yDTxCzAABO-QsR98g962.png-wh_500x0-wm_3-wmp_4-s_987426457.png
6. 判断文档是否自动创建,如果是开始解析文档结构
https://s2.运维网.com/wyfs02/M00/05/E2/wKiom1muEFyRZ10iAABZkSNJF_o321.png-wh_500x0-wm_3-wmp_4-s_1245220809.png
7. 如果是动态文档,增加mapping映射,否则返回Index对象
https://s4.运维网.com/wyfs02/M02/05/E2/wKiom1muEI6iVAAmAABTYe0Sy_s388.png-wh_500x0-wm_3-wmp_4-s_2902064472.png
8. 如果是创建
https://s4.运维网.com/wyfs02/M01/A4/93/wKioL1muEJvBclZ0AABVkDZIhZs955.png-wh_500x0-wm_3-wmp_4-s_1154215581.png
与上面类似,只是多了一个id
https://s3.运维网.com/wyfs02/M00/05/E2/wKiom1muEOWwCLY6AAAmH5axqME711.png-wh_500x0-wm_3-wmp_4-s_150684285.png
9.返回到主方法
https://s1.运维网.com/wyfs02/M01/A4/93/wKioL1muEPrhIBwJAADHdLcTagc220.png-wh_500x0-wm_3-wmp_4-s_1322832909.png
如果是需要创建文档结构,先创建文档结构
https://s4.运维网.com/wyfs02/M00/A4/93/wKioL1muESuB61i2AAA-5xiSOK8277.png-wh_500x0-wm_3-wmp_4-s_803996972.png
创建完后,二次校验一下,是否创建成功
10. 调用创建文档接口
https://s1.运维网.com/wyfs02/M00/A4/93/wKioL1muEViAgr48AAC_OjiA3Dg863.png-wh_500x0-wm_3-wmp_4-s_263618126.png
11. 检验是否可写状态 刷新最后更新时间,并启动状态检查
https://s1.运维网.com/wyfs02/M01/A4/93/wKioL1muEYeRlj8HAABgYDbKBCw237.png-wh_500x0-wm_3-wmp_4-s_777791212.png
12 调用luence
https://s1.运维网.com/wyfs02/M02/05/E3/wKiom1muEkDyIshXAABiGthTxmI906.png-wh_500x0-wm_3-wmp_4-s_349930988.png
https://s5.运维网.com/wyfs02/M01/A4/94/wKioL1muElzjVbilAABKgv7e6mw490.png-wh_500x0-wm_3-wmp_4-s_2985269917.png
13 如果是创建 addDocuments,如果是更新updateDocuments。
https://s3.运维网.com/wyfs02/M02/05/E3/wKiom1muEqexJ7Y1AACTNinwfxY811.png-wh_500x0-wm_3-wmp_4-s_1479378639.png
14 增加其实也是更新操作
https://s1.运维网.com/wyfs02/M02/A4/94/wKioL1muErWyTRg6AACpwQun8Kk208.png-wh_500x0-wm_3-wmp_4-s_3778990752.png
15. 剩下是记录log和一些统计信息
Translog.LocationtranslogLocation =translog.add(new Translog.Index(index));
https://s2.运维网.com/wyfs02/M00/A4/94/wKioL1muEuyQUv8rAABS8rsX3XI458.png-wh_500x0-wm_3-wmp_4-s_3788299270.png
16. 里面还有很多锁,还没有看懂!!!
页:
[1]