【ES系列】ELASTICSEARCH中的REFRESH和FLUSH

本文详细探讨了Elasticsearch中的refresh和flush操作,以及它们与Lucene段(Segment)的关系。refresh使得新数据对搜索可见,但会带来性能开销,可通过index.refresh_interval设置刷新间隔。flush则将内存数据写入新的段并持久化到磁盘,确保数据安全。在批量索引时,可调整相关设置以优化性能。
摘要由CSDN通过智能技术生成

起因:增删改之后,马上查找,数据不会发生变化

发现elasticsearch执行增删改之后,是不会立即进行刷新的,需要配置refresh这个参数

写入流程

Lucene的一个Index会由一个或多个sub-index构成,sub-index被称为Segment,每个segment中包含多个documents文件,一个segment中会有完整的正向索引和反向索引;

在搜索时,Lucene会遍历这些segments,以segments为基本单位独立搜索每个segments文件,而后再把搜索结果合并;

Elasticsearch采取的机制是将数据添加到lucenelucene内部会维护一个数据缓冲区,此时数据都是不可搜索的。每隔一段时间(默认为1秒),Elasticsearch会执行一次refresh操作:lucene中所有的缓存数据都被写入到一个新的Segment,清空缓存数据。此时数据就可以被搜索。当然,每次执行refresh操作都会生成一个新的Segment文件,这样一来Segment文件有大有小,相当碎片化。Elasticsearch内部会开启一个线程将小的Segment合并(Merge)成大的Segment,减少碎片化,降低文件打开数,提升IO性能;

参数由来

以下摘录自官网:Update API | Elasticsearch Guide [7.5] | Elastic

Update API
Updates a document using the specified script.

Request
POST /<index>/_update/<_id>

Query parameters
 if_seq_no
(Optional, integer) Only perform the operation if the document has this sequence number. See Optimistic concurrency control.
 if_primary_term
(Optional, integer) Only perform the operation if the document has this primary term. S
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值