Elasticsearch操作数据后马上更新的办法

前言:

我们经常有这样的需求,在对 Elasticsearch  数据进行操作的时候,要及时返回刚刚操作完毕的数据,或者数据列表。

比如加入存储一条数据后,我马上要返回数据的总条数,这个时候,会出问题,Elasticsearch会返回操作之前的数据,也就是假如开始有500条数据,我Insert了一条进去,按道理来说应该是501条,但是这个时候查询会发现,只有500条数据,再次请求又得到501条数据,这个是怎么回事呢?

这个问题因为 Elasticsearch  有延迟的关系(好像记得是3秒还是1秒来着)。有的人的做法比如有以下方法解决的。

Thread.sleep(3000L);

还有再请求一次的。但这些都不是解决方案,当你知道有方法的时候,你会自己笑自己。13.gif

其实我看过这个网站的博客里有用到,但是群主没提到这个方法的作用。

在:http://www.sojson.com/blog/88.html里有一句代码,如下:

BulkRequestBuilder bulkRequest = ESTools.client.prepareBulk().setRefresh(true);

这里的setRefresh(true);

就是自动刷新的用处。所以在我们CRUD的时候,如果对数据增删改操作的时候,如果要及时返回最新数据,那么我们就需要加这个方法,及时刷新数据。

当然 Elasticsearch  也是可以配置刷新时间的,但是没必要,频繁的刷新会造成压力过大。

 

版权所属:SO JSON在线解析

原文地址:http://www.sojson.com/blog/105.html

转载时必须以链接形式注明原始出处及本声明。

转载于:https://my.oschina.net/u/3399280/blog/1553356

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值