elasticsearch删除数据延迟刷新问题

本文记录了一次在后台管理系统中遇到的数据同步问题,详细描述了当通过管理功能删除数据时,数据库与ES间同步延迟的现象及解决方案。通过调整ES索引的refresh_interval属性并手动触发刷新,最终实现了数据的即时同步。

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

记录一次工作中遇到的问题。

后台管理系统中管理功能将数据保存到数据库一份,同时也保存到ES中一份,然后终端POS从ES中取数据。

这时候问题来了,通过管理功能删除数据,本来应该是同时删除数据库以及ES中的数据,然而,实际情况是数据库中的数据已被删除,ES中的数据还在,等1-2分钟之后ES中数据才消失。这导致终端POS不能显示最新的数据。

下面来看看问题的解决过程。

先来看看实体类的配置。

ESWindowgoods代表窗口菜单功能,ESWindowgoodsFuture代表未来菜谱功能,从document注解中的参数来看,两个索引实体类的刷新间隔是一样的。

但是实际功能操作过程中发现,窗口菜单功能删除菜品后,ES不会立即删除,未来菜谱功能删除菜品后,ES会立即删除。为什么配置一样,两个功能删除操作后的行为不一样呢?

这时候我决定看一下实际ES索引的设置到底是什么,这里我们使用elasticsearch-head插件来查看。

点击索引下面的信息,然后再点击索引信息,这时候就可以看到索引的初始设置以及属性信息了

我们可以看到windowgoodsindex索引的refresh_interval属性是-1,意思是不刷新。这样就可以解释,为什么窗口菜单删除数据后,ES中没有立即删除,而是过1-2分钟再删这个现象了。

 

我们再来看看windowgoodsfutureindex索引的refresh_interval属性,这个属性不存在,这种情况下该属性默认为1。这就能解释,为什么未来菜谱删除数据后,ES中可以立即删除。于是,我们要重建windowgoodsfutureindex索引,使该索引的刷新行为和windowgoodsindex保持一致。

我们用这个命令重建索引,由于不想删除原先索引中的数据,所以需要先把原索引数据导入到新索引中。导入完之后,我们使用新的windowgoodsfutureindex索引。这时候两个索引的刷新行为保持一致了,在功能中删除数据后,数据库已经删了,但是ES中数据还存在,过1-2分钟才删除。不过,我们的问题还是没有解决,我们要达到删除数据,数据库和ES中都被删除目的,我们现在可以再删除后去调用ES的手动刷新方法来达到这个目的。

好了,再次测试,执行删除操作后,数据库和ES中的数据都可以删除了。

 

转载于:https://www.cnblogs.com/jkfd/p/9930788.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值