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

先写到内存中,此时不可搜索
默认经过 1s 之后会被写入 lucene 的底层文件 segment 中 ,此时可以搜索到
refresh 之后才会写入磁盘
以上过程由于随时可能被中断导致数据丢失,所以每一个过程都会有 translog 记录,如果中间有任何一步失败了,等服务器重启之后就会重试,保证数据写入。translog也是先存在内存里的,然后默认5秒刷一次写到硬盘里。

在 index ,Update , Delete , Bulk 等操作中,可以设置 refresh 的值。取值如下:

refresh=true

更新数据之后,立刻对相关的分片(包括副本) 刷新,这个刷新操作保证了数据更新的结果可以立刻被搜索到。

refresh=wait_for

这个参数表示,刷新不会立刻进行,而是等待一段时间才刷新 ( index.refresh_interval),默认时间是 1 秒。刷新时间间隔可以通过index 的配置动态修改。或者直接手动刷新 POST /twitter/_refresh

refresh=false

refresh 的默认值,更新数据之后不立刻刷新,在返回结果之后的某个时间点会自动刷新,也就是随机的,看es服务器的运行情况。

那么选择哪种刷新方式?

wait_for 和 true 对比,前者每次会积累一定的工作量再去刷新

true 是低效的,因为每次实时刷新会产生很小的 segment,随后这些零碎的小段会被合并到效率更高的大 segment 中。也就是说使用 true 的代价在于,在 index 阶段会创建这些小的 segment,在搜索的时候也是搜索这些小的 segment,在合并的时候去将小的 segment 合并到大的 segment 中

不要在多个请求中对每一条数据都设置 refresh=wait_for , 用bulk 去批量更新,然后在单个的请求中设置 refresh=wait_for 会好一些

如果 index.refresh_interval: -1 ,将会禁用刷新,那带上了 refresh=wait_for 参数的请求实际上刷新的时间是未知的。如果 index.refresh_interval 的值设置的比默认值( 1s )更小,比如 200 ms,那带上了 refresh=wait_for 参数的请求将很快刷新,但是仍然会产生一些低效的segment。

refresh=wait_for 只会影响到当前需要强制刷新的请求,refresh=true 却会影响正在处理的其他请求。所以如果想尽可能小的缩小影响范围时,应该用 refresh=wait_for

es 的 refresh 策略设置相关推荐

  1. ES客户端更新策略设置(Java)

    问题 在Spring中使用ES的客户端更新数据的时候,会出现数据不会立即生效问题. 原因 ES的客户端是异步请求,并不会等待ES所有节点数据更新完毕再响应请求. 思路 通过在客户端设置数据更新刷新策略 ...

  2. 理解ES的refresh、flush、merge

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

  3. linux 正则 设置密码复杂度,Ubuntu修改密码及密码复杂度策略设置方法

    一.修改密码 1.修改普通用户密码 passwd 先输入当前密码确认,然后输入新的密码修改 2.修改root用户密码 sudo passwd root 默认root用户被禁止登录,如果需要解除限制,修 ...

  4. 在组策略中用户策略仅对特定计算机生效,如何对本地组策略设置使之不对特定用户生效?...

    组策略就是修改注册表中的相关配置,组策略使用自己更完善的管理组织方法,可以对各种对象中的设置进行管理和配置,远比手工修改注册表方便灵活,功能也更加强大.那如何设置本地组策略不对特定用户生效呢?下文给出 ...

  5. Windows Azure: Blob Container的访问权限与策略设置

    在介绍Blob容器的访问权限与策略设置之前,我们先来明确一下两个概念. 第一,对容器的访问,指的是什么?简单来说,就是对容器的增删改查操作.其中增是指往容器里面写入数据,删是删除容器里头Blob文件, ...

  6. win7组策略-计算机配置,win7系统组策略设置系统配置模块的操作方法

    很多小伙伴都遇到过对win7系统组策略设置系统配置模块进行设置的困惑吧,一些朋友看过网上对win7系统组策略设置系统配置模块设置的零散处理方法,并没有完完全全明白win7系统组策略设置系统配置模块是如 ...

  7. 1.12.Flink Kafka-Connector详解、Consumer消费策略设置、动态加载Topic、Consumers Offset 自动提交、Producer、容错等

    1.12.Flink Kafka-Connector详解 1.12.1.Kafka Consumer消费策略设置 1.12.2.Kafka Consumer的容错 1.12.3.动态加载Topic 1 ...

  8. 计算机用户名密码策略,设置域用户帐户密码策略

    设置域用户帐户策略 从安全和易用考虑,普通域用户的帐户策略必须满足一下要求: u 密码长度至少3位 u 最长使用期限60天 u 密码必须符合复杂性要求 u 密码最短使用0天 u 帐户锁定阀值7次 u ...

  9. Spring Data JPA 从入门到精通~方法的查询策略设置

    方法的查询策略设置 通过下面的命令来配置方法的查询策略: @EnableJpaRepositories(queryLookupStrategy= QueryLookupStrategy.Key.CRE ...

  10. Exchange server 2013(十四)WSUS部署及组策略设置(2)

    我们继续上一节未完的博客,继续我们的WSUS设置.[上一章节标题:Exchange server 2013(十四)WSUS部署及组策略设置(1) 网址:http://1183839.blog.51ct ...

最新文章

  1. 【Spring】【JUnit】单元测试
  2. Python 技术篇-含中文编码的代码运行方法,(unicode error) ‘utf-8‘ codec can‘t decode问题原因及解决方法
  3. 太吾绘卷存档修改2020_太吾绘卷/神级初始存档
  4. sdch: chrome支持的新HTTP传输压缩算法
  5. php beast linux安装,windows centos php-beast 安装
  6. pythonopencv的配置_python配置与使用OpenCV
  7. 你(wo)不注意的和数据类型有关的小细节
  8. postgresql 集合类型_PostgreSQL 分组集合新功能(GROUPING SETS,CUBE,ROLLUP)
  9. python迭代器一般包含_python 迭代器
  10. 擦地机器人排行榜_擦地机器人品牌排行榜来了,你想了解的都在这里
  11. HMM-MEMM-CRF
  12. python中if嵌套语句_选择结构-if..elif语句和if语句的嵌套
  13. python金融编程入门_零基础是如何入门Python量化金融的?
  14. GitHub账户注册流程及常见问题解析
  15. npm init vite@latest 报错
  16. OpenCV参考手册之Mat类详解(三)
  17. 2021 年 9 项优秀在线电话会议服务比较(带免费选项)
  18. QT选择目录等常用文件/文件夹操作
  19. self attention(自注意力机制)
  20. C3D、Two-stream、TSN等动作识别方法简介

热门文章

  1. redis集群scan_Redis中的Scan命令的使用:查询大数据量
  2. Windows下安装 Apache 步骤
  3. google 浏览器下载历史版本的方法
  4. c语言实训自我总结报告,C++实训总结报告
  5. python报IndentationError: unexpected indent的解决方法.
  6. Word各级标题格式设置和自动排序(标题序号)设置
  7. Spring Bean生命周期(简单易懂)
  8. Presto error executing query
  9. Docker中文文档 分享
  10. matlab仿真项目心得,Matlab与Simulink系统仿真学习心得