elasticsearch 怎么更新数据的

发布网友 发布时间:2022-04-27 00:36

我来回答

1个回答

热心网友 时间:2022-05-03 03:31

我们经常有这样的需求,在对 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 也是可以配置刷新时间的,但是没必要,频繁的刷新会造成压力过大。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com