博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
elasticsearch实战---java实现修改数据立即可见
阅读量:6034 次
发布时间:2019-06-20

本文共 1068 字,大约阅读时间需要 3 分钟。

0.背景

后台管理系统中,当进行部分修改操作后,会立即跳转列表页面,此时列表展示的仍为es的旧数据。修改的es的数据没有立即展示,但是当再次刷新页面后,数据才为最新的数据。

众所周知,es不是一个实时的搜索引擎,当数据从写入到可见之间有1秒的间隔时间。因此,在此时间间隔内的查询操作,都是不是最新的数据。

1.解决

java high level client中,为indexinsertupdatebulk 提供了setRefreshPolicy方法,用于设置数据更改后的刷新策略。

主要是三个参数IMMEDIATENONEWAIT_UNTIL

NONE:

Don’t refresh after this request. The default.这是默认的一种方式,调用request修改以后,并不进行强制刷新,刷新的时间间隔为refresh_interval设置的参数。复制代码
// 1.request.setRefreshPolicy(WriteRequest.RefreshPolicy.NONE);// 2.request.setRefreshPolicy("false");复制代码

IMMEDIATE

强制刷新相关的主分片和副分片(而不是整个索引),使更新的分片状态变为可搜索。在使用之前,一定要仔细考虑使用该参数会不会导致性能不佳。强制刷新作为请求的一部分,这种方式并不适用于索引和查询高吞吐量的场景,但是作为流量小时提供一致性的视图的确是很使用的。复制代码
// 1.request.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);// 2.request.setRefreshPolicy("true");复制代码

WAIT_UNTIL:

在返回请求结果之前,会等待刷新请求所做的更改。并不是强制立即刷新,而是等待刷新发生。Elasticsearch会自动刷新已更改每个index.refresh_interval的分片,默认为一秒。该设置是动态的。请求持续为打开状态,直到修改的内容变为可搜索为止。此刷新策略与高索引和搜索吞吐量兼容,但它会导致请求等待回复,直到刷新发生复制代码
设置方式有以下两种。// 1.request.setRefreshPolicy(WriteRequest.RefreshPolicy.WAIT_UNTIL);// 2.request.setRefreshPolicy("wait_for");复制代码

转载地址:http://lhchx.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
Javascript中的异步如何实现回调
查看>>
halcon算子介绍
查看>>
挖掘你不知道的windowsxp中的带宽潜能
查看>>
Software Engineering 招聘要求
查看>>
【转载】InstallAnyWhere自动化制作安装包的知识
查看>>
69、iSCSI共享存储配置实战
查看>>
文本编程
查看>>
乔布斯走了。你还期待苹果吗?
查看>>
优先级
查看>>
Tomcat与Web服务器、应用服务器的关系
查看>>
用DFS实现全排列 & 八皇后问题
查看>>
深度学习博客
查看>>
Android总结篇系列:Android Service
查看>>
Android dumpsys命令的使用
查看>>
Linux Kernel系列一:开篇和Kernel启动概要
查看>>
BZOJ 2756: [SCOI2012]奇怪的游戏 网络流/二分
查看>>
master + worker模式的node多核解决框架——node-cluster
查看>>
Android如何实现超级棒的沉浸式体验
查看>>
使用node打造自己的命令行工具方法教程
查看>>