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

信息发布:生如夏花 发布日期:2016-08-22 18:51 热度:738 分享到:

前言:

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

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

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

Thread.sleep(3000L);

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

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

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

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

这里的setRefresh(true);

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

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


本文主题

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

¥我需要走的更远,点击我 赞助。 如果还有疑问,点击我加群,为你提供最好的解答。


工具导航地图

 
Nodejs + socket Demo 赞助二维码 赞助名单 百度口碑点赞 查看QQ群美女帅哥 点击加QQ群 听音乐 开启弹幕 X
反馈意见