ES客户端更新策略设置(Java)
问题
在Spring中使用ES的客户端更新数据的时候,会出现数据不会立即生效问题。
原因
ES的客户端是异步请求,并不会等待ES所有节点数据更新完毕再响应请求。
思路
通过在客户端设置数据更新刷新策略为WAIT_UNTIL
,即等待ES完成对数据对更新再响应客户端即可。
步骤
pom.xml
设置Maven依赖:
<dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.9.1</version>
</dependency>
<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>7.9.1</version>
</dependency>
<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.9.1</version>
</dependency>
client
在Spring中配置ES客户端:
@Beanpublic RestHighLevelClient restHighLevelClient() {return new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1", 9200, "http")));}
更新ES数据
public static void addData(JSONObject json, String index, String type, String id) {try {UpdateRequest request = new UpdateRequest(index, type, id);request.doc(json);request.docAsUpsert(true);// 修改刷新策略为等待刷新完成,再结束请求request.setRefreshPolicy(WriteRequest.RefreshPolicy.WAIT_UNTIL);rClient.update(request, RequestOptions.DEFAULT);} catch (IOException e) {log.error("写入或更新ES异常:", e);throw new HandleException(String.format("写入或更新ES异常:%s", e.getMessage()));}}
ES3种刷新策略
IMMEDIATE
:更新请求发送后,告诉es强制刷新NONE
:更新请求发送后,告诉es不用刷新WAIT_UNTIL
:更新请求发送后,等待es中更新的数据可用后再响应客户端(同步)
参考
- Elasticsearch数据刷新策略RefreshPolicy简述
- java-rest-high-document-update
- Enum WriteRequest.RefreshPolicy
ES客户端更新策略设置(Java)相关推荐
- 在10分钟内在新Mac中设置Java开发环境(更新)
这只是一个小的更新文章,它引用了2个较旧的条目( a , b ),我将它们合并为一个步骤,就像一步操作,并确保所有功能都在最新的MacOSX 10.9 Mavericks下工作 . 我主要针对的是初次 ...
- Windows Server 2012远程刷新客户端组策略及IE代理设置图文教程
Windows Server 2012远程刷新客户端组策略及IE代理设置图文教程 https://www.jb51.net/os/2012/542694.html 发布时间:2017-03-21 16 ...
- 让OSCE客户端在无法连接控制台情况下,直接到官网下载更新的设置
让OSCE客户端在无法连接控制台情况下,直接到官网下载更新的设置: 1: 2: 3:更新或者打包客户端
- 计算机更新策略,客户端无法更新组策略
你好,客户端windows 7,服务器windows server 2008.该域部署了多个站点,某些站点部署的是只读域控制器. 客户反馈客户端无法更新组策略,执行gpupdate /force,报错 ...
- 云原生微服务架构实战精讲第八节 访问控制与更新策略
第24讲:服务调用失败的处理策略与实践 在微服务架构的应用中,微服务之间一般有两种类型的交互方式,一种是使用消息中间件的异步消息模式,也就是第 14 课时中提到的事件驱动设计,微服务之间进行交互的是消 ...
- Redis:缓存一致性问题(缓存更新策略)
Redis缓存的一致性 1. 缓存 1.1 缓存的作用: 1.2 缓存的成本: 2. 缓存模型 3. 缓存一致性问题 3.1 引入 3.2 解决 (1) 主动更新:先更新数据库,再手动删除缓存 (2) ...
- java ee开发环境_设置Java EE 6开发环境
java ee开发环境 本教程简要说明了如何设置典型的环境来开发基于Java EE 6的应用程序. 除了可以正常工作的Windows XP客户端具有足够的CPU能力和内存外,本教程没有其他先决条件. ...
- 在Windows 7中设置Java开发环境
一段时间以来,我收到了很多愿意尝试Java语言的学生和人们的要求,它们提供了关于如何设置Java开发环境的简单指南,类似于我一年前写的那样. Mac用户. 看到这里和这里 . 因此,本文主要针对Jav ...
- 设置Java EE 6开发环境
本教程简要说明了如何设置典型的环境来开发基于Java EE 6的应用程序. 除了可以正常工作的Windows XP客户端具有足够的CPU能力和内存外,本教程没有其他先决条件. 在教程中,我们将需要安装 ...
最新文章
- 波司登在“寒潮”下再创新高,羽绒服行业真的靠天吃饭?
- python数字转对应中文_python中将阿拉伯数字转换成中文的实现代码 | 学步园
- string转map集合_Map、斗地主案例
- [DIV+CSS应用]澄清display:inline;与float:left;的用途
- SQLErrorCodeSQLExceptionTranslator
- Sqlce与SQL Server2000/2005数据转换程序
- 神经网络与深度学习——TensorFlow2.0实战(笔记)(二)(开发环境介绍)
- html与java接口,JavaWeb学习——Servlet相关的接口和类
- 2021 最新版《神经网络和深度学习》中文版开放下载!
- 计算机视觉,凉了?!
- Tablestore Timestream:为海量时序数据存储设计的全新数据模型...
- html5 h264 websocket,2.5 在WebSocket中使用HTML5媒体
- Linux netfilter hook源码分析(基于内核代码版本4.18.0-80)
- 读取和修改JPEG图片文件的头信息EXIF和JFIF
- linux sticky权限,Linux基础入门篇之文件高级权限suid,sgid,sticky
- 在eclipse上使用Maven创建动态web项目
- 美团外卖大数据“杀熟”,程序员成了“接锅侠”,简直不讲武德!
- [SCOI2012]喵星球上的点名
- 高级网吧光纤组建网络技术方案(转)
- 计算机常用英文简称扫盲
热门文章
- linux下使用Mongodb命令笔记
- html背景看不见,html不显示图片-为什么在html中不显示背景图片 – 手机爱问
- js基础3 dom基础/绑定获取事件/图片切换练习/文档加载/全选全不选/dom的其他属性/dom的增加/添加删除练习
- mysql闭包的概念_彻底搞懂JavaScript的闭包、防抖跟节流
- 如何能布局出好楼盘风水 看楼盘风水如何布局助力翻盘
- 量子技术实现穿墙术,理论是否可行
- 外接27寸4K显示器贼爽,这就送你
- CodeMix使用教程:调试
- 春运网购火车票退款没到账怎么办?
- mysql gprof_cygwin环境下gprof+gprof2dot+dot生成函数关系结构图