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

一、前言

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

二、问题原因

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

三、解决方案

1、直接修改ES刷新频率

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

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

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

四、ES更新原理

文章来源地址https://uudwc.com/A/woqvV

原文地址:https://blog.csdn.net/2301_76787421/article/details/133434960

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年10月17日 08:56
Jmeter系列- 详解 CSV 数据文件设置
下一篇 2023年10月17日 14:26