在ES中, 要保证被索引的文档能够立即被搜索到, 有两种方法:_refresh 或者_flush。

那么二者的区别是什么呢?要搞懂这个问题, 就需要对ES中文档的索引过程有个了解。

我们知道ES的索引数据是写入到磁盘上的。但这个过程是分阶段实现的,因为IO的操作是比较费时的。

当一个文档进入ES的初期, 文档是被存储到内存里的,默认经过1s之后, 会被写入文件系统缓存,这样该文档就可以被搜索到了,注意,此时该索引数据被没有最终写入到磁盘上。如果你对这1s的时间间隔还不满意, 调用_refresh就可以立即实现内存->文件系统缓存, 从而使文档可以立即被搜索到。

所以refresh实现的是文档数据从内存到文件系统缓存的过程。

再来看flush,flush是用于translog的。

ES为了数据的安全, 在接受写入的文档的时候, 在写入内存buffer的同时, 会写一份translog日志,从而在出现程序故障/磁盘异常时, 保证数据的完整和安全。flush会触发lucene commit,并清空translog日志文件。 translog的flush是ES在后台自动执行的,默认情况下ES每隔5s会去检测要不要flush translog,默认条件是:每 30 分钟主动进行一次 flush,或者当 translog 文件大小大于 512MB主动进行一次 flush。对应的配置是index.translog.flush_threshold_period 和 index.translog.flush_threshold_size

需要指出的是, 从ES2.0开始,每次 index、bulk、delete、update 完成的时候,一定触发flush translog 到磁盘上,才给请求返回 200 OK。这个改变提高了数据安全性,但是会对写入的性能造成不小的影响。在写入效率优先的情况下,可以在 index template 里设置如下参数:"index.translog.durability":"async" 和 "index.translog.sync_interval":30s (默认是5s)。

参考:

1. http://stackoverflow.com/questions/19963406/refresh-vs-flush

2.https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-translog.html

3. http://kibana.logstash.es/content/elasticsearch/principle/realtime.html

Elasticsearch中refresh和flush的区别是什么相关推荐

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

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

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

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

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

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

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

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

  5. 理解ES的refresh、flush、merge

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

  6. es的refresh和flush介绍

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

  7. 如何用你最熟悉的 SQL 来查询 Elasticsearch 中的数据?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! Elasticsearch 是一个全文搜索引擎,具有您期 ...

  8. 【Elasticsearch】Elasticsearch中数据是如何存储的

    1.概述 转载:Elasticsearch中数据是如何存储的 前言 很多使用Elasticsearch的同学会关心数据存储在ES中的存储容量,会有这样的疑问:xxTB的数据入到ES会使用多少存储空间. ...

  9. 【Elasticsearch】 Elasticsearch中数据是如何存储的

    1.概述 转载:https://elasticsearch.cn/article/6178 转载防丢失 前言 很多使用Elasticsearch的同学会关心数据存储在ES中的存储容量,会有这样的疑问: ...

最新文章

  1. Java NIO理解与使用
  2. 零基础学Python:函数的参数详解
  3. [HAOI2015]树上操作
  4. 浅析epoll – epoll函数深入讲解
  5. 【Python数据挖掘课程】六.Numpy、Pandas和Matplotlib包基础知识
  6. 第21讲:IP代理池的搭建和使用
  7. C++等级考试知识点总结
  8. Vue 实现前后端分离项目
  9. 基于mycat的mysql_基于mycat实现mysql的读写分离
  10. ROS开发时的服务器启动命令
  11. bzoj 3329: Xorequ(DP+矩阵快速幂)
  12. 6.3交换器(Exchangers)
  13. 卷积编码的原理与MATLAB及FPGA实现
  14. JavaScript格式化时间与日期
  15. CSDN刷访问量专用博客
  16. 电脑连接热点无internet访问权限_Win10连接wifi后显示无internet访问权限如何解决...
  17. 【嵌入式模块】DS1302 时钟定时芯片
  18. 为什么一个操作系统连个进程启动日志都没有
  19. 计算机图形学流体仿真mac网格,正交网格下不可压缩流体的图形学模拟
  20. 基于Java+SpringBoot+Thymeleaf+Mysql新冠疫苗预约系统设计与实现

热门文章

  1. python3 if语句嵌套_3.2.3 if语句的嵌套
  2. K7中使用VDMA设计video system
  3. 京津跨域通勤特征与职住空间分布研究
  4. 军团守卫显示无法律连接服务器,指挥官军团守卫新手入门玩法攻略分享
  5. 计算机办公应用教程,计算机办公应用教程
  6. ElasticSearch权限控制实战
  7. python回车和换行的区别_回车与换行的区别 - bithup的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. 创建型设计模式之工厂模式
  9. Java各种相关软件下载地址
  10. C - N^3问题 SDUT