1.详细描述一下Elasticsearch索引文档的过程
协调节点默认使用文档
ID
参与计算(也支持通过
routing
),以便为路由提供合适的分片。
shard = hash(document_id) % (num_of_primary_shards)
当分片所在的节点接收到来自协调节点的请求后,会将请求写入到
Memory Buffffer
,然后定时(默认是每隔
1
秒)写入到
Filesystem Cache
,这个从
Momery Buffffer
到
Filesystem Cache
的过程就叫做
refresh
;
当然在某些情况下,存在
Momery Buffffer
和
Filesystem Cache
的数据可能会丢失,
ES
是通过
translog
的机制来
保证数据的可靠性的。其实现机制是接收到请求后,同时也会写入到
translog
中,当
Filesystem cache
中的数据
写入到磁盘中时,才会清除掉,这个过程叫做
flflush
;
在
flflush
过程中,内存中的缓冲将被清除,内容被写入一个新段,段的
fsync
将创建一个新的提交点,并将内容刷
新到磁盘,旧的
translog
将被删除并开始一个新的
translog
。
flflush
触发的时机是定时触发(默认
30
分钟)或者
translog
变得太大(默认为
512M
)时;
2.
详细描述一下
Elasticsearch
更新和删除文档的过程。
删除和更新也都是写操作,但是
Elasticsearch
中的文档是不可变的,因此不能被删除或者改动以展示其变更;
磁盘上的每个段都有一个相应的
.del
文件。当删除请求发送后,文档并没有真的被删除,而是在
.del
本文深入探讨了Elasticsearch中索引文档的步骤,包括数据接收、分析、存储和分片分配等关键环节,对于理解Elasticsearch的数据处理流程具有重要意义。
最低0.47元/天 解锁文章
710

被折叠的 条评论
为什么被折叠?



