ElasticSearch 更新后延迟解决方法

es在更新之后并不是立即可见(可查询)的,会有10s(阿里云的es)的延迟,在这个时间间隔内search是不可见的。

解决办法有三种:
1. 可以通过设置refresh_interval参数来修改刷新的间隔(比如设置为1秒或更短时间,结合2的方法一起使用)。
2. 通过ui层解决。比如更新成功后,弹出提示框,在这期望es已经更新成功,再读取数据时就能读到最新数据;
3. 设置刷新策略,有以下三种(es版本5.4.3)。
PHP版本:
The Index, Update, Delete, and Bulk APIs support setting refresh to control when changes made by this request are made visible to search

JAVA版本:
java high level client中,为index、insert、update、bulk 提供了setRefreshPolicy方法,用于设置数据更改后的刷新策略。

public static enum RefreshPolicy implements Writeable {
NONE("false"), // 默认;异步刷新,立即返回;
IMMEDIATE("true"), // 立即刷新,对es集群压力会比较大
WAIT_UNTIL("wait_for"); // 等刷新时返回,响应性不太好,

参考资料:
ElasticSearch 更新后延迟解决方法:https://blog.csdn.net/forBurnInG/article/details/105581288
es 更新延迟问题:https://blog.csdn.net/chedan666/article/details/83313274
6.4 doc ?refresh:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-refresh.html

发表评论?

0 条评论。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据