Elasticsearch refresh
Elasticsearch 的 refresh
Index, Update, Delete, and Bulk APIs 支持通过设置 refresh 来该请求是否对查询可见;有如下值可以使用:
空字符串或者 true
当操作发生后,立即更新相关的主分片以及复制分片(并不是整个索引),更新的文档会立即出现在查询结果中。如果做此修改要仔细的思考和验证,不管从索引还是查询的角度,都不会导致性能变差。wait for
在响应之前,等待请求所做的更改被刷新可见。这个并不会强制立即刷新,而是等待一次刷新发生。Elasticsearch 自动的在每个(index.refresh_interval)周期内刷新分片,该默认时间为 1s,可以动态修改。调用 Refresh API 或者设置支持refresh
为true
的API 也会造成刷新,从而导致已经运行refresh=wait_for
的请求返回。false(默认)
不采取任何刷新相关操作。此请求所做的更改将在请求返回后的某个时间变得可见。
选择要使用的配置
除非你有充足的理由需要等待改变变为可见,否则就使用 refresh=false
,因为这个是默认的,所以 ULR 上也不需要保留这个参数。这个是最简单与便捷的选择。
如果你要求必须更改与请求同步可见,那么就需要在向 Elasticsearch 添加更多负载和等待更长时间的响应之间进行选择。以下几点有助于你作出决定:
设置为
wait_for
相比于设置为true
,索引上的更改越多,保留的工作也越多,如果索引每个周期内index.refresh_interval
更改一次,则不保存任何工作。设置为
true
会创造低效的索引结构(小的 segment),然后必须将其合并为更大的索引结构(大的 segment)。意味着设置为true
的代价有创建小段的索引时间,查询小段的查询时间,以及合并为大段的合并时间。永远不要连续启动多个
refresh=wait_for
的请求。而是将它们批处理为一个带refresh=wait_for
的 bulk 请求,Elasticsearch 会并行的启动它们,并在全部完成后返回。如果刷新时间间隔设置为
-1
,将会禁止自动刷新,那么带refresh=wait_for
的请求将会无限等待,直到一些操作引起刷新。相反的,设置index.refresh_interval
值比默认值小,如 200ms ,会使refresh=wait_for
响应变快,但是依然会产生低效的段。refresh=wait_for
仅影响其上的请求,但是,通过立即强制刷新,refresh=true
会影响其他正在进行的请求。通常来说,你有一个正常运行的系统,你并不希望去干扰它,那么refresh=wait_for
会是一个很小的修改。
refresh=wait_for
也可能强制刷新
如果一个 refresh=wait_for
请求进来,这个时候已经有 index.max_refresh_listeners
个请求(默认1000)等待那个分片刷新,那个这个请求就会表现为 true
: 它将会强制刷新。这保证了当 refresh=wait_for
请求返回时更改对于搜索可见,同时防止未检查的资源被阻塞的请求使用。如果一个请求因为监听 slog 不够而强制刷新,那么响应体中会包含 "forced_refresh": true
;
Bulk 请求仅仅会占用每个接触分片一个的 slot,无论对该分片修改多少次。
Elasticsearch refresh相关推荐
- elasticsearch中 refresh 和flush区别【转】
elasticsearch中有两个比较重要的操作:refresh 和 flush refresh操作 当我们向ES发送请求的时候,我们发现es貌似可以在我们发请求的同时进行搜索.而这个实时建索引并可以 ...
- 【Elasticsearch】Elasticsearch:Elasticsearch中的refresh和flush操作指南
1.概述 转载:https://www.cnblogs.com/sanduzxcvbnm/p/12092561.html 在今天的文章里,我们来主要介绍一下Elasticsearch的refresh及 ...
- Elasticsearch 之 commit point | Segment | refresh | flush 索引分片内部原理
转载自: http://www.6aiq.com/article/1539308290695 基本概念 Segments in Lucene 众所周知,Elasticsearch 存储的基本单元是sh ...
- 【ES系列】ELASTICSEARCH中的REFRESH和FLUSH
起因:增删改之后,马上查找,数据不会发生变化 发现elasticsearch执行增删改之后,是不会立即进行刷新的,需要配置refresh这个参数 Lucene的一个Index会由一个或多个sub-in ...
- Elasticsearch:Elasticsearch 中的 refresh 和 flush 操作指南
在今天的文章里,我们来主要介绍一下 Elasticsearch 的 refresh 及 flush 两种操作的区别.如果我们从字面的意思上讲,好像都是刷新的意思.但是在 Elasticsearch 中 ...
- Elasticsearch中refresh和flush的区别是什么
在ES中, 要保证被索引的文档能够立即被搜索到, 有两种方法:_refresh 或者_flush. 那么二者的区别是什么呢?要搞懂这个问题, 就需要对ES中文档的索引过程有个了解. 我们知道ES的索引 ...
- elasticsearch(ES)的clear、refresh、fresh的区别及含义
一. refresh 官方文档:A refresh makes all operations performed on an index since the last refresh availabl ...
- 【Elasticsearch】索引 强制合并 缓存 refresh flush 等操作
文章目录 1.概述 1.1 索引强制合并 1.1.1 实战 1.2 缓存清理 1.3.flush操作 1.4.refresh操作 1.概述 1.1 索引强制合并 强制合并的功能为强制合并一个或多个索引 ...
- 【Elasticsearch】Elasticsearch 优化写入流程实现NRT近实时(filesystem cache,refresh)
现有流程的问题,每次都必须等待fsync将segment刷入磁盘,才能将segment打开供search使用,这样的话,从一个document写入,到它可以被搜索,可能会超过1分钟!!!这就不是近实时 ...
- 2021年大数据ELK(十七):Elasticsearch SQL 订单统计分析案例
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 订单统计分析案例 一.案例介绍 二.创建索引 三.导入测试数据 四.统计不同支 ...
最新文章
- Spark技术栈有哪些组件,每个组件都有什么功能,适合什么应用场景?
- PHPMailer——发送邮件函数封装
- Linux启动/停止/重启Mysql数据库的方法
- 中文论文万能句型_干货|SCI论文写作的万能句型~
- 正则表达式确实是一种考验
- ORB-SLAM 解读(六)ORB特征点构建BoW
- 台达plc自由口通讯_自由口通讯问题无法接收数据
- MySQL插入数据错误Incorrect string value: ‘\xE8\x85\xBE\xE8\xAE\xAF‘ for column ‘custname‘ at row 1
- 基于华为云轻松搭建属于自己的网站 (Linux,Apache,MySQL,PHP)
- html div边框宽度,边框的宽度
- matlab点集配准,matlab练习程序(对应点集配准的四元数法)
- android最佳实践:网络 电池 压缩
- 为了梦想而奋斗的人值得敬佩
- java解非线性方程组_非线性方程与方程组的数值解法
- 汽车电子功能安全标准ISO26262解析(十一)——安全机制
- redis数据类型有哪些
- 驾押人员安全教育培训系统隐私政策
- 4.3 CISC和RISC的基本概念
- 使用docker部署zabbix,自定义微信报警
- 超全!元器件封装查询图表(收藏)