es 数据在被修改之后 再发起查询还是会查到未修改前的数据

es服务版本 5.3.3,es pom版本2.1.0,jest版本2.3,我使用的是jest httpclient方式,就是前端每次调一个修改数据的接口之后然后回调查询接口,结果就是会查到老数据(就是查到的那条数据是没有被修改的样子),后来尝试了在回调查询的时候增加了一点延时(500ms),效果提升了一点,可以成功查到修改后数据的样子了,但是不太稳定,时而成功时而失败,被这个问题困惑了好久,求解决!
已邀请:

yayg2008

赞同来自: laoyang360 陈锦涛

默认是1秒可见。如果你的需求一定要写完就可见,那在写的时候增加refresh参数,强制刷新即可。但强烈建议不这么干,因为这样会把整个集群拖垮。

mcs41531

赞同来自: 陈锦涛

refresh时间,默认1s

laoyang360 - [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:blog.csdn.net/laoyang360

赞同来自: 陈锦涛

可以在前端拿到后端的结果后,休眠>1s。就可以看到实时数据。

code4j - coder

赞同来自: 陈锦涛

写后立马读的需求场景看能不能避免下,还有, query是走倒排索引查询的所以会出现refresh未执行搜索不到的情况,但是如果你用get,也就是通过id查询的话,他会先从translog拿一下,写translog是写操作的第一步,就不受refresh影响了。2.2的代码我看了是这么做的,但是5.x不太清楚了,

要回复问题请先登录注册