Elasticsearch数据刷新策略RefreshPolicy简述

2023-11-03

说明

默认情况下ElasticSearch索引的refresh_interval1秒,这意味着数据写1秒才就可以被搜索到。

每次索引refresh会产生一个新的 lucene 段,这会导致频繁的 segment merge 行为,对系统 CPU 和 IO 占用都比较高。

如果产品对于实时性要求不高,则可以降低刷新周期,如:index.refresh_interval: 120s

但是这种特性对于功能测试来说比较麻烦:

  • 因为实时性不能保证,所以每次插入测试数据之后,都需要sleep一段时间,才能进行测试。
  • 因为实时性不能保证,及时通过sleep策略通过的case,也可能偶尔失败。

为了解决上述问题,需要提供ElasticSearch增删改数据之后数据立即刷新的策略。

源码

ElasticSearch 5.1.1

org.elasticsearch.action.support.WriteRequestBuilder#setRefreshPolicy接口如下:

default B setRefreshPolicy(RefreshPolicy refreshPolicy) {
    request().setRefreshPolicy(refreshPolicy);
    return (B) this;
}

枚举org.elasticsearch.action.support.WriteRequest.RefreshPolicy定义了三种策略:

NONE,
IMMEDIATE,
WAIT_UNTIL; 

可知有以下三种刷新策略:

  • RefreshPolicy#IMMEDIATE:
    请求向ElasticSearch提交了数据,立即进行数据刷新,然后再结束请求。
    优点:实时性高、操作延时短。
    缺点:资源消耗高。
  • RefreshPolicy#WAIT_UNTIL:
    请求向ElasticSearch提交了数据,等待数据完成刷新,然后再结束请求。
    优点:实时性高、操作延时长。
    缺点:资源消耗低。
  • RefreshPolicy#NONE:
    默认策略。
    请求向ElasticSearch提交了数据,不关系数据是否已经完成刷新,直接结束请求。
    优点:操作延时短、资源消耗低。
    缺点:实时性低。

实现此接口的主要类如下:

  • DeleteRequestBuilder
  • IndexRequestBuilder
  • UpdateRequestBuilder
  • BulkRequestBuilder
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Elasticsearch数据刷新策略RefreshPolicy简述 的相关文章

  • elasticsearch6.3.2搭建集群

    搭建3台机器的elasticsearch集群 所需软件 1 jdk8 2 elasticsearch6 3 2 3 elasticsearch head 在安装elasticsearch之前 先安装jdk1 8 在一个文件夹中 解压三个el
  • Docker run最后加/bin/bash遇到的问题

    问题展示 1 使用docker run dit 容器ID 容器名 一些参数 bin bash 后台启动es镜像 root iZ2zegnzd0af38r6v96pcfZ test docker run dit p 9200 9200 p 9
  • ES性能优化原理揭秘!初看一脸懵逼,看懂直接跪下。。。

    目录 1 一道面试题的引入 2 性能优化的杀手锏 Filesystem Cache 3 数据预热 4 冷热分离 5 ElasticSearch 中的关联查询 6 Document 模型设计 7 分页性能优化 1 一道面试题的引入 如果面试的
  • Docker 安装 ES eslasticsearch

    Docker 安装 ES eslasticsearch 1 下载镜像 我这里下载的是 6 8 14 如果你不知道有哪些版本 可以查看 https hub docker com elasticsearch root localhost jzj
  • springCloud整合Elasticsearch 之 Springboot整合ES

    引入依赖 maven
  • ES查询不存在的索引,索引未创建导致查询报错

    ES查询不存在的索引 索引未创建导致查询报错 项目中的一个es索引是根据时间建立的 在对其操作时候 因时间原因此索引为创建 查询时候报如下错误 Elasticsearch exception type index not found exc
  • Elasticsearch7.7 基础教程 1

    Elasticsearch7 7 基础教程 1 以下简称es7 7 es7 7的安装 1 官网下载 https www elastic co cn downloads elasticsearch 2 解压文件 3 在安装文件夹下的bin目录
  • 【Elasticsearch】Elasticsearch命令行操作

    文章目录 Elasticsearch 一 ES介绍 二 安装Elasticsearch 三 安装Kibana 四 介绍ES中的一些概念 集群 节点 索引 数据库 文档 数据库中表中一条记录 分片 副本 五 操作ES 5 1索引 5 1 1
  • ES时间分组统计查询

    创建索引 PUT test 索引结构 PUT test mapping properties insertTime type date id type text fields keyword type keyword ignore abov
  • es备份数据和恢复数据

    1 fs方式 备份到本地挂载的硬盘 1 创建一个仓库 PUT snapshot my backup type fs settings location mount my backup 上面代码创建一个名为 my backup 的备份 存放在
  • elasticsearch 安装配置

    20211208 es允许远程访问 在本地启动Elasticsearch后 发现只能用localhost和127 0 0 1访问 换成电脑的ip地址 显示拒绝访问 需要修改 config elasticsearch yml下的network
  • Elasticsearch使用系列-ES增删查改基本操作+ik分词

    一 安装可视化工具Kibana ES是一个NoSql数据库应用 和其他数据库一样 我们为了方便操作查看它 需要安装一个可视化工具 Kibana 官网 https www elastic co cn downloads kibana 和前面安
  • Elasticsearch笔记4 基础入门

    执行分布式检索 一个查询操作 在ES分布式环境中分为两步 查询与合并 查询阶段 ES集群向所有分片传递查询语句 分片接收到请求后 执行搜索并建立一个长度为top n的优先队列 存储结果 top n 的大小取决于分页参数 top n from
  • 【elasticsearch】memory locking requested for elasticsearch process but memory is not locked

    解决方法 开启bootstrap memory lock 修改文件 etc elasticsearch elasticsearch yml 上面那个报错就是开启后产生的 如果开启还要修改其它系统配置文件 bootstrap memory l
  • 权衡问题---学习了微服务各大常用组件的一点思考

    1 没有什么技术可以完全通用 只要深度使用一定需要从业务出发对技术进行权衡 从几个例子出发 1 ES的分片机制天生支持分布式 同时也带来了分布式了弊端 排序和算分问题 搜索的场景需要严格的定制化 通过对mapping的修改可以支持算分的调整
  • ES词典热加载-通过修改ik分词器源码实现热加载自定义词典

    逻辑 自定义词典的数据从mysql加载 只需要重启一次ES即可 后续热加载 实现 在自定义词典的init方法中实现每隔一定时间读取mysql并写入自定义词典的逻辑
  • ES使用小结

    ES使用总结 1 查询es全部索 2 根据es索引查询文档 3 查看指定索引mapping文件 4 默认查询总数10000条 5 删除指定索引文档 6 删除所有数据包括索引 7 設置窗口值 8 logstash简单配置 Logstash配置
  • ELK 性能优化实践

    点击上方蓝色 方志朋 选择 设为星标 回复 666 获取独家整理的学习资料 一 背景介绍 近一年内对公司的 ELK 日志系统做过性能优化 也对 SkyWalking 使用的 ES 存储进行过性能优化 在此做一些总结 本篇主要是讲 ES 在
  • 解决Java JPA Es索引时间戳字符串格式比较问题

    说明 在Java开发中常见使用 yyyy MM dd HH mm ss 来格式化时间戳 例如 ApiModelProperty 订单开始日期 JsonFormat pattern yyyy MM dd HH mm ss JSONField
  • 记一次ElasticSearch 更改 mapping 字段类型的过程

    我的个人博客 逐步前行STEP 首先 es不支持直接更改mappinng 所以 更改 mapping 实质上是重建索引 操作步骤如下 1 为当前这个索引old index设置一个别名my index curl XPOST localhost

随机推荐

  • keil 如何打开eeprom_如何在Keil中使RAM在带电复位时保持数据?

    最近关注的人比较多 非常感谢大家的认可 如何写点对大家有点借鉴作用的文章 也是我一直思考的问题 如果大家有什么想法 请留言或私信 谢谢 在 被Keil坑了一天 实在太意外了 用Keil的来瞅瞅看 中 提到了在使用Keil设置栈空间时可能存在
  • equals方法该怎么重写呢

    关于equals方法的重写 在编写代码的时候 我们总是会需要重写equals代码 因为equals代码没有重写的时候比较的是两个对象的内存地址 而两个代码的内存地址不同 答案肯定返回false 这并不是我们希望看到的 因此要重写equals
  • Java回调函数详解

    什么是回调函数 CallBack 在编写程序时 有时候会调用许多API中实现实现的函数 但某些方法需要我们传入一个方法 以便在需要的时候调用我们传入进去的函数 这个被传入的函数称为回调函数 Callback function 打个比方 有一
  • Visual Studio Code 配置java开发环境

    最近在学习算法 有时需要在自己的机器上调试一下代码 有些算法题目的题解是用java编的 因为这类代码只是单个的java文件 所以不想动用MyEclipse那样的重型工具 正好机器上有一个轻量级的VS Code 我就试着在上面搭了一个java
  • windows上的linux子系统(WSL)

    目录 一 介绍 二 原理 2 1 wsl组件 2 2 wsl运行过程 2 3 文件系统 2 4 禁忌 三 使用 3 1 安装 3 2 用户账户和权限 3 3 wsl管理 3 3 互操作 参考 推荐阅读 一 介绍 Windows Subsys
  • 时间对象new Date 以及中国标准时间与时间戳,标准时间之间的转换

  • C语言程序设计大作业——员工管理系统(代码超详细内含实验报告)

    写在前面 欢迎来到 发奋的小张 的博客 我是小张 一名普通的在校大学生 在学习之余 用博客来记录我学习过程中的点点滴滴 也希望我的博客能够更给同样热爱学习热爱技术的你们带来收获 希望大家多多关照 我们一起成长一起进步 也希望大家多多支持我鸭
  • 基于BP神经网络的回归预测

    基本概念 误差反向传播神经网络简称为BP Back Propagation 网络 它是一种具有三层或三层以上的多层神经网络 每一层都由若干个神经元组成 如图所示为一个BP神经网络的结构图 它的左 右各层之间各个神经元实现全连接 即左层的每一
  • LINUX下搭建JAVA的开发环境

    1 Linux下JDK的安装 至于下载JDK的二进制可执行文件 这里就不讲了 大家直接到官方网去下载就可以了 1 我下载下来的JDK安装文件名称为 jdk 1 5 0 14 linux i586 rpm bin 我把它保存在 tools目录
  • el search 条件更新

    from elasticsearch import Elasticsearch es Elasticsearch 192 168 55 90 9200 updateBody query bool must wildcard fileName
  • esxi管理端口_VMWare Esxi 基于NAT的管理端口转发

    上一篇关于WMWare Esxi的文章介绍了在多台虚拟机之间用软路由共享一个IP的情况 VMWare Esxi 海蜘蛛配置NAT共享IP上网 其中用了两个IP 一个用于虚拟机上网 一个用于Management Network 但是在只有一个
  • R语言 数据导出和导入 csv tsv xls xlsx

    R语言 Excel 导出为Excel的xls xlsx 导出数据 write table data2 file train1 xls sep t row names TRUE col names TRUE quote TRUE write
  • Promise的理解和使用

    一 Promise 是什么 1 理解 Promise是一门新的技术 ES6规范 Promise是JS中进行异步编程的新解决方案 旧方案是使用回调函数 Promise是一个构造函数 Promise对象用来封装一个异步操作并可以获取其成功 失败
  • 使用 Docker 部署 Prometheus + Grafana 监控平台

    使用 Docker 部署 Prometheus Grafana 监控平台 默认docker 已经安装好 我使用的是CentOS7 注意一定要开启服务器对应的端口 1 安装Prometheus docker run itd name prom
  • Windows虚拟机激活

    打开cmd命令提示符 首先连接kms服务器 slmgr skms skms netnr eu org 接着输入对应系统版本的产品密钥 xxxxx xxxxx xxxxx xxxxx xxxxx slmgr ipk xxxxx xxxxx x
  • 【DEBUG】MoviePy couldn't find the codec associated with the filename.Provide the 'codec' parameter

    问题描述 ValueError MoviePy couldn t find the codec associated with the filename Provide the codec parameter in write videof
  • __weak详解

    object默认的修饰符是 strong 然而在开发中我们也经常使用 weak 用它来解决循环引用的问题 两个对象相互引用无法释放 造成内存泄露 用 weak来破坏一个强引用 来达到正常释放的目的 这种情况常见于block中 但是有没有想过
  • linux驱动面试题2018

    linux驱动面试题2018 面试题整理 含答案 版权声明 本文为博主原创文章 未经博主允许不得转载 转载请标明原址 https blog csdn net kai zone article details 82021233 前言 这篇文章
  • Camera:高斯模糊

    高斯模糊场景 手机相机不同于工业相机以及车载相机 手机相机的模式切换往往会伴随着预览分辨率的改变 而分辨率的切换伴随手机App gt Framework gt HAL gt Drivel一层层的下发上传 所造成的时间延迟已经带来了不可忽略的
  • Elasticsearch数据刷新策略RefreshPolicy简述

    说明 默认情况下ElasticSearch索引的refresh interval为1秒 这意味着数据写1秒才就可以被搜索到 每次索引refresh会产生一个新的 lucene 段 这会导致频繁的 segment merge 行为 对系统 C