问题

在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)相关推荐

  1. 在10分钟内在新Mac中设置Java开发环境(更新)

    这只是一个小的更新文章,它引用了2个较旧的条目( a , b ),我将它们合并为一个步骤,就像一步操作,并确保所有功能都在最新的MacOSX 10.9 Mavericks下工作 . 我主要针对的是初次 ...

  2. Windows Server 2012远程刷新客户端组策略及IE代理设置图文教程

    Windows Server 2012远程刷新客户端组策略及IE代理设置图文教程 https://www.jb51.net/os/2012/542694.html 发布时间:2017-03-21 16 ...

  3. 让OSCE客户端在无法连接控制台情况下,直接到官网下载更新的设置

    让OSCE客户端在无法连接控制台情况下,直接到官网下载更新的设置: 1: 2: 3:更新或者打包客户端

  4. 计算机更新策略,客户端无法更新组策略

    你好,客户端windows 7,服务器windows server 2008.该域部署了多个站点,某些站点部署的是只读域控制器. 客户反馈客户端无法更新组策略,执行gpupdate /force,报错 ...

  5. 云原生微服务架构实战精讲第八节 访问控制与更新策略

    第24讲:服务调用失败的处理策略与实践 在微服务架构的应用中,微服务之间一般有两种类型的交互方式,一种是使用消息中间件的异步消息模式,也就是第 14 课时中提到的事件驱动设计,微服务之间进行交互的是消 ...

  6. Redis:缓存一致性问题(缓存更新策略)

    Redis缓存的一致性 1. 缓存 1.1 缓存的作用: 1.2 缓存的成本: 2. 缓存模型 3. 缓存一致性问题 3.1 引入 3.2 解决 (1) 主动更新:先更新数据库,再手动删除缓存 (2) ...

  7. java ee开发环境_设置Java EE 6开发环境

    java ee开发环境 本教程简要说明了如何设置典型的环境来开发基于Java EE 6的应用程序. 除了可以正常工作的Windows XP客户端具有足够的CPU能力和内存外,本教程没有其他先决条件. ...

  8. 在Windows 7中设置Java开发环境

    一段时间以来,我收到了很多愿意尝试Java语言的学生和人们的要求,它们提供了关于如何设置Java开发环境的简单指南,类似于我一年前写的那样. Mac用户. 看到这里和这里 . 因此,本文主要针对Jav ...

  9. 设置Java EE 6开发环境

    本教程简要说明了如何设置典型的环境来开发基于Java EE 6的应用程序. 除了可以正常工作的Windows XP客户端具有足够的CPU能力和内存外,本教程没有其他先决条件. 在教程中,我们将需要安装 ...

最新文章

  1. 波司登在“寒潮”下再创新高,羽绒服行业真的靠天吃饭?
  2. python数字转对应中文_python中将阿拉伯数字转换成中文的实现代码 | 学步园
  3. string转map集合_Map、斗地主案例
  4. [DIV+CSS应用]澄清display:inline;与float:left;的用途
  5. SQLErrorCodeSQLExceptionTranslator
  6. Sqlce与SQL Server2000/2005数据转换程序
  7. 神经网络与深度学习——TensorFlow2.0实战(笔记)(二)(开发环境介绍)
  8. html与java接口,JavaWeb学习——Servlet相关的接口和类
  9. 2021 最新版《神经网络和深度学习》中文版开放下载!
  10. 计算机视觉,凉了?!
  11. Tablestore Timestream:为海量时序数据存储设计的全新数据模型...
  12. html5 h264 websocket,2.5 在WebSocket中使用HTML5媒体
  13. Linux netfilter hook源码分析(基于内核代码版本4.18.0-80)
  14. 读取和修改JPEG图片文件的头信息EXIF和JFIF
  15. linux sticky权限,Linux基础入门篇之文件高级权限suid,sgid,sticky
  16. 在eclipse上使用Maven创建动态web项目
  17. 美团外卖大数据“杀熟”,程序员成了“接锅侠”,简直不讲武德!
  18. [SCOI2012]喵星球上的点名
  19. 高级网吧光纤组建网络技术方案(转)
  20. 计算机常用英文简称扫盲

热门文章

  1. linux下使用Mongodb命令笔记
  2. html背景看不见,html不显示图片-为什么在html中不显示背景图片 – 手机爱问
  3. js基础3 dom基础/绑定获取事件/图片切换练习/文档加载/全选全不选/dom的其他属性/dom的增加/添加删除练习
  4. mysql闭包的概念_彻底搞懂JavaScript的闭包、防抖跟节流
  5. 如何能布局出好楼盘风水 看楼盘风水如何布局助力翻盘
  6. 量子技术实现穿墙术,理论是否可行
  7. 外接27寸4K显示器贼爽,这就送你
  8. CodeMix使用教程:调试
  9. 春运网购火车票退款没到账怎么办?
  10. mysql gprof_cygwin环境下gprof+gprof2dot+dot生成函数关系结构图