ElasticSearch更新数据后查不到的问题

本文讲述了在微服务重构项目中遇到的商品上下架功能测试问题,涉及ES的内存缓存刷新机制。提出两种解决方案:调整ES刷新频率和请求接口后强制刷新,同时介绍了ES更新原理。

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

一、前言

上一篇文章还是2个星期前写的,近段时间有点懒,本来这篇也不太愿意动笔写,但这两天关注数据,发现新的一年已经收获了4个粉丝,首先感谢大家的关注,我以后还是会尽量多写一点。这篇文章讲一下今天我们微服务重构项目中测试时碰到的问题,我们有一个功能做商品上下架,当点击了开关按纽,设置商品上架,但前端页面还是显示下架状态,这里调用了两个接口,一个接口更新状态(商品库DB、商品ES),然后立即调用查询接口(走ES),发现返回来的数据还是下架状态,但这时候再去Kinaba控制台查发现状态已经是上架的。

二、问题原因

ES在进行写操作时,会先在内存中缓存一段数据,然后采取一定的策略,将 这些数据写入磁盘,这个过程称Refresh,每次Refresh都会产生一个新的Lucene段,但段过多又会消耗文件句柄,内存,所以又有一定的策略将这些较小的段合并为大的段,刷新的ES默认采用每隔1秒定时刷新,所以刚写进去的数据立即去查极有可能是查不到。

三、解决方案

1、直接修改ES刷新频率

注:不建议生产环境采用该方案,并且这个刷新时间你也很难确定。

2、请求接口请求后强制刷新

注:ES8的语法,包括新写入数据、变更数据、删除数据都存在不会立即刷新的问题。

四、ES更新原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值