首页 > 其他分享 >Elasticsearch(ES)(版本7.x)数据更新后刷新策略RefreshPolicy

Elasticsearch(ES)(版本7.x)数据更新后刷新策略RefreshPolicy

时间:2024-08-17 13:27:43浏览次数:9  
标签:实时性 RefreshPolicy WriteRequest Elasticsearch ES 刷新 数据 刷新周期

Elasticsearch(ES)(版本7.x)数据更新后刷新策略RefreshPolicy

介绍

ES数据写入后,默认1s后才会被搜索到(refresh_interval为1);

这样可能是考虑到性能问题,毕竟实时IO 消耗较多资源

造成的问题

例如一个索引现在有100个文档,当新增一个文档时,立即查询,显示数量为100,并不为101

例如当修改一个文档数据后,立即查询的结果为上次文档的数据,并不为最新数据

刷新策略RefreshPolicy

1.NONE:(默认策略)

  • 请求提交数据后,不等待数据刷新,直接结束请求
  • 优点:操作延时短、资源消耗低
  • 缺点: 实时可见性低,数据可能不会立即可见,直到下一个自动刷新周期。
  • 适用场景: 对实时性要求不高但对性能敏感的应用。

2.WAIT_UNTIL:

  • 索引操作完成后,Elasticsearch 会等待当前正在进行的刷新周期完成(1s)再返回客户端请求
  • 优点:数据会在当前刷新周期内变得可搜索,通常比 None 策略具有更好的实时性
  • 缺点:可能会有较高的延迟,尤其是在刷新周期较长时间的情况下
  • 适用场景: 需要较快的数据可见性,但又不想强制立即刷新的情况

3.IMMEDIATE:

  • 请求提交数据后,立即进行数据刷新,再结束请求返回客户端
  • 优点:实时性高、操作延时短,数据几乎立即变得可搜索
  • 缺点:强制刷新会消耗较多资源,并可能导致更高的延迟
  • 适用场景:对数据实时性有极高要求的应用

支持的接口:

  • 删除:DeleteRequestBuilder
  • 新增:IndexRequestBuilder
  • 更新:UpdateRequestBuilder
  • 批量:BulkRequestBuilder

用法:(elasticsearch-rest-high-level-client)

// 设置为立即刷新
request.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);

// 设置为等待当前刷新周期
request.setRefreshPolicy(WriteRequest.RefreshPolicy.WAIT_UNTIL);

// 使用默认策略(即不等待刷新)
request.setRefreshPolicy(WriteRequest.RefreshPolicy.NONE);

其中 WriteRequest.RefreshPolicy 是一个枚举类型,包含了以上提到的不同刷新策略选项。
需要注意的是,频繁的刷新可能会导致更多的磁盘I/O操作,增加CPU负载,并可能导致更多的段合并操作,从而影响整体性能。因此,在选择刷新策略时,需要根据实际应用场景来平衡实时性和性能之间的关系。


结束

标签:实时性,RefreshPolicy,WriteRequest,Elasticsearch,ES,刷新,数据,刷新周期
From: https://blog.csdn.net/zk_tww/article/details/140929804

相关文章

  • Cookie和Session的区别
    Cookie:Cookie是保存在客户端的一小块文本串的数据。客户端向服务器发起请求时,服务端会向客户端发送一个Cookie,客户端就把Cookie保存起来。在客户端下次向同一服务器再发起请求时,Cookie被携带发送到服务器。服务端可以根据这个Cookie判断用户的身份和状态。Session:Sessi......
  • Paths和Files
    Paths类Paths类主要用于操作文件和目录路径。它提供了一些静态方法,用于创建java.nio.file.Path实例,代表文件系统中的路径。//创建一个Path实例,表示当前目录下的一个文件Pathpath=Paths.get("example.txt");//创建一个绝对路径PathabsolutePath=Paths.get("/home/u......
  • Unixed |As IBM's legal battle over Linux intensifies, other firms hope to benefi
    BPC>Fullarticletextfetchedfrom(noneedtoreportissueforexternalsite): | archive.today | archive.mdBusiness |IBMandLinuxUnixedAsIBM'slegalbattleoverLinuxintensifies,otherfirmshopetobenefitJun19th2003 | san......
  • 004、Vue3+TypeScript基础,使用组合式API的写法
    01、App.vue代码如下:<template><divclass="app"><h1>好好学习,天天向上</h1><Person/></div></template><script>//JS或TSimportPersonfrom'./view/PersonNew.vue'exportdefault{......
  • 002、Vue3+TypeScript基础,调用子页面和简单效果
    01、App.vue代码:<template><divclass="app"><h1>好好学习,天天向上</h1><Person/></div></template><script>//JS或TSimportPersonfrom'./view/Person.vue'exportdefault{//Ap......
  • 01、Vue3+TypeScript基础,创建第一个页面
    1、main.js代码如下://引入createApp用于创建Vue实例import{createApp}from'vue'//引入App.vue根组件importAppfrom'./App.vue'constapp=createApp(App);//App.vue的根元素id为appapp.mount('#app')2、App.vue代码如下:<template><div......
  • Codeforces 169 Div2
    AClosestPoint由题意可得三个及以上的点无法插入新的点,只有两个点时可以插入但当两个点间隔为1时同样无法插入先判断,后输出就行#include<bits/stdc++.h>usingnamespacestd;constintN=50;intt,n;inta[N];intmain(){ cin>>t; while(t--){ cin>>n; for(i......
  • TypeScript 面试题汇总
    引言TypeScript是一种由微软开发的开源、跨平台的编程语言,它是JavaScript的超集,为JavaScript添加了静态类型系统和其他高级功能。随着TypeScript在前端开发领域的广泛应用,掌握TypeScript已经成为很多开发者必备的技能之一。本文将整理一系列常见的TypeScript面试题......
  • LookupError: Resource averaged_perceptron_tagger not found.解决方案
      大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学......
  • .net core 微服务间通信 消息总线更新 利用GRPC restful 优缺点
     在.NETCore微服务架构中,微服务间的通信是一个核心问题,而消息总线的更新则涉及到微服务间的动态配置和状态同步。关于使用gRPC和RESTfulAPI在微服务间通信的优缺点,以及它们在消息总线更新中的应用,可以从以下几个方面进行详细分析:一、gRPC的优缺点优点:高效性:gRPC使用Prot......