elasticsearch中有两个比较重要的操作:refresh 和 flush

refresh操作

当我们向ES发送请求的时候,我们发现es貌似可以在我们发请求的同时进行搜索。而这个实时建索引并可以被搜索的过程实际上是一次es 索引提交(commit)的过程,如果这个提交的过程直接将数据写入磁盘(fsync)必然会影响性能,所以es中设计了一种机制,即:先将index-buffer中文档(document)解析完成的segment写到filesystem cache之中,这样避免了比较损耗性能io操作,又可以使document可以被搜索。以上从index-buffer中取数据到filesystem cache中的过程叫做refresh。

refresh操作可以通过API设置:

POST /index/_settings

{“refresh_interval”: “10s”}

当我们进行大规模的创建索引操作的时候,最好将将refresh关闭。

POST /index/_settings

{“refresh_interval”: “-1″}

es默认的refresh间隔时间是1s,这也是为什么ES可以进行近乎实时的搜索。

flush操作与translog

我们可能已经意识到如果数据在filesystem cache之中是很有可能在意外的故障中丢失。这个时候就需要一种机制,可以将对es的操作记录下来,来确保当出现故障的时候,保留在filesystem的数据不会丢失,并在重启的时候可以从这个记录中将数据恢复过来。elasticsearch提供了translog来记录这些操作。

当向elasticsearch发送创建document索引请求的时候,document数据会先进入到index buffer之后,与此同时会将操作记录在translog之中,当发生refresh时(数据从index buffer中进入filesystem cache的过程)translog中的操作记录并不会被清除,而是当数据从filesystem cache中被写入磁盘之后才会将translog中清空。而从filesystem cache写入磁盘的过程就是flush。可能有点晕,我画了一个图帮大家理解这个过程:

总结一下translog的功能:

1.保证在filesystem cache中的数据不会因为elasticsearch重启或是发生意外故障的时候丢失。

2.当系统重启时会从translog中恢复之前记录的操作。

3.当对elasticsearch进行CRUD操作的时候,会先到translog之中进行查找,因为tranlog之中保存的是最新的数据。

4.translog的清除时间时进行flush操作之后(将数据从filesystem cache刷入disk之中)。

再总结一下flush操作的时间点:

1.es的各个shard会每个30分钟进行一次flush操作。

2.当translog的数据达到某个上限的时候会进行一次flush操作。

有关于translog和flush的一些配置项:

index.translog.flush_threshold_ops:当发生多少次操作时进行一次flush。默认是 unlimited。

index.translog.flush_threshold_size:当translog的大小达到此值时会进行一次flush操作。默认是512mb。

index.translog.flush_threshold_period:在指定的时间间隔内如果没有进行flush操作,会进行一次强制flush操作。默认是30m。

index.translog.interval:多少时间间隔内会检查一次translog,来进行一次flush操作。es会随机的在这个值到这个值的2倍大小之间进行一次操作,默认是5s。

es的refresh和flush介绍相关推荐

  1. 理解ES的refresh、flush、merge

    一.refresh 对于任何数据库的写入来讲fsync刷盘虽然保证的数据的安全但是如果每次操作都必须fsync一次,那fsync操作将是一个巨大的操作代价,在衡量对数据安全与操作代价下,ES引入了一个 ...

  2. 【ES系列】ELASTICSEARCH中的REFRESH和FLUSH

    起因:增删改之后,马上查找,数据不会发生变化 发现elasticsearch执行增删改之后,是不会立即进行刷新的,需要配置refresh这个参数 Lucene的一个Index会由一个或多个sub-in ...

  3. elasticsearch中 refresh 和flush区别【转】

    elasticsearch中有两个比较重要的操作:refresh 和 flush refresh操作 当我们向ES发送请求的时候,我们发现es貌似可以在我们发请求的同时进行搜索.而这个实时建索引并可以 ...

  4. 【Elasticsearch】Elasticsearch:Elasticsearch中的refresh和flush操作指南

    1.概述 转载:https://www.cnblogs.com/sanduzxcvbnm/p/12092561.html 在今天的文章里,我们来主要介绍一下Elasticsearch的refresh及 ...

  5. Elasticsearch:Elasticsearch 中的 refresh 和 flush 操作指南

    在今天的文章里,我们来主要介绍一下 Elasticsearch 的 refresh 及 flush 两种操作的区别.如果我们从字面的意思上讲,好像都是刷新的意思.但是在 Elasticsearch 中 ...

  6. Elasticsearch中refresh和flush的区别是什么

    在ES中, 要保证被索引的文档能够立即被搜索到, 有两种方法:_refresh 或者_flush. 那么二者的区别是什么呢?要搞懂这个问题, 就需要对ES中文档的索引过程有个了解. 我们知道ES的索引 ...

  7. Elasticsearch(一) ES之简介、倒排索引介绍以及 elasticsearch、kibana安装

    1,什么是Elasticsearch Elasticsearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearc ...

  8. OpenGL ES 2.0 Shader相关介绍

    转自:http://xiaxveliang.blog.163.com/blog/static/29708034201272101349650/ 不得不说,百度搜技术文章,搜出来的垃圾文章非常多.用搜索 ...

  9. ES(ElasticSearch)分布式全文搜索引擎介绍及使用方式

    1.什么是ES **ES** 全称 **ElasticSearch** 是一种分布式全文搜索引擎,基于Lucene(全文搜索框架)开发而来. Lucene是公认的迄今为止的最好用的搜索引擎库,但是他所 ...

最新文章

  1. 【双11狂欢的背后】微服务注册中心如何承载大型系统的千万级访问?
  2. discuz手机版模板开发
  3. Linux之curl命令使用详解—网络故障定位(五)
  4. 华为鸿蒙第一期名单,机型正式确认,鸿蒙2.0第一批名单曝光!花粉:华为不够厚道...
  5. 【Linux 内核 内存管理】Linux 内核内存布局 ② ( x86_64 架构体系内存分布 | 查看 /proc/meminfo 文件 | /proc/meminfo 重要字段解析 )
  6. 如何做好Serv-U安全设置,保护FTP服务器安全
  7. 华容道与数据结构 (1)
  8. php mysql缓存技术_系统的讲解 - PHP 缓存技术
  9. 西门子ug通用后处理_五轴UG(NX)后处理
  10. PwnLnX:针对Linux系统的渗透测试工具
  11. 目标识别—SSD网络详解
  12. 离散数学关于等价关系的证明
  13. Unity打包篇:关于MMD模型贴画在安卓手机上无法显示的问题。
  14. 技术QA:如何找回丢失的证书模板或将独立CA转换成企业CA?
  15. windows系统的包管理器【choco】
  16. python两列时间间隔计算器_计算两列之间的Pandas DataFrame时间差异(以小时和分钟为单位)...
  17. Android 悬浮窗口(及解决6.0以上无法显示问题)
  18. 一个nginx使用同一端口不同域名代理到不同网站
  19. 儿子于靖洋的百天照片
  20. QT——http协议(大华摄像头保活,根据Id获取大华摄像头播放地址rtsp流)

热门文章

  1. JDBC Connection [com.mysql.jdbc.Connection@2bbf4094] will not be managed by Spring 的一个可能错误
  2. 复制链接到safari浏览器打开_苹果手机把链接复制到浏览器打不开也下载不了这怎么回事...
  3. newinstance()和new有什么区别?
  4. 培训html源码,前端培训——html源码笔记
  5. python 单词纠错_用 Python 实现英文单词纠错功能
  6. SQLAlchemy批量操作数据
  7. Unity制作自己的Project Template
  8. mysql查分区数据_mysql之数据分区
  9. Ubuntu安装搜狗fcitx无法正常安装的问题
  10. Mybatis-Plus分页查询total始终为0