0.背景
后台管理系统中,当进行部分修改操作后,会立即跳转列表页面,此时列表展示的仍为es的旧数据。修改的es的数据没有立即展示,但是当再次刷新页面后,数据才为最新的数据。
众所周知,es不是一个实时的搜索引擎,当数据从写入到可见之间有1秒的间隔时间。因此,在此时间间隔内的查询操作,都是不是最新的数据。
1.解决
在java high level client中,为index
、insert
、update
、bulk
提供了setRefreshPolicy
方法,用于设置数据更改后的刷新策略。
主要是三个参数IMMEDIATE
、NONE
、WAIT_UNTIL
:
NONE:
- Don’t refresh after this request. The default.
- 这是默认的一种方式,调用request修改以后,并不进行强制刷新,刷新的时间间隔为refresh_interval设置的参数。
- 复制代码
-
- // 1.
- request.setRefreshPolicy(WriteRequest.RefreshPolicy.NONE);
- // 2.
- request.setRefresh