Elasticsearch操作数据后马上更新的办法
- Elasticsearch教程(一),全程直播(小白级别)
- Elasticsearch教程(二),IK分词器安装
- Elasticsearch教程(三),IK分词器安装 (极速版)
- Elasticsearch安装(四), elasticsearch head 插件安装和使用。
- Elasticsearch教程(五) elasticsearch Mapping的创建
- Elasticsearch教程(六) elasticsearch Client创建
- Elasticsearch教程(七) elasticsearch Insert 插入数据(Java)
- Elasticsearch教程(八) elasticsearch delete 删除数据(Java)
- Elasticsearch教程(九) elasticsearch 查询数据 | 分页查询
- Elasticsearch权威指南-中文.pdf
前言:
我们经常有这样的需求,在对 Elasticsearch 数据进行操作的时候,要及时返回刚刚操作完毕的数据,或者数据列表。
比如加入存储一条数据后,我马上要返回数据的总条数,这个时候,会出问题,Elasticsearch会返回操作之前的数据,也就是假如开始有500
条数据,我Insert
了一条进去,按道理来说应该是501
条,但是这个时候查询会发现,只有500
条数据,再次请求又得到501
条数据,这个是怎么回事呢?
这个问题因为 Elasticsearch 有延迟的关系(好像记得是3秒还是1秒来着)。有的人的做法比如有以下方法解决的。
Thread.sleep(3000L);
还有再请求一次的。但这些都不是解决方案,当你知道有方法的时候,你会自己笑自己。
其实我看过这个网站的博客里有用到,但是群主没提到这个方法的作用。
在:https://www.sojson.com/blog/88.html里有一句代码,如下:
BulkRequestBuilder bulkRequest = ESTools.client.prepareBulk().setRefresh(true);
这里的setRefresh(true);
就是自动刷新的用处。所以在我们CRUD
的时候,如果对数据增删改操作的时候,如果要及时返回最新数据,那么我们就需要加这个方法,及时刷新数据。
当然 Elasticsearch 也是可以配置刷新时间的,但是没必要,频繁的刷新会造成压力过大。
版权所属:SO JSON在线解析
原文地址:https://www.sojson.com/blog/105.html
转载时必须以链接形式注明原始出处及本声明。
如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。