前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES提交操作与原理

ES提交操作与原理

原创
作者头像
叫我家宝
修改2022-04-13 18:09:53
5920
修改2022-04-13 18:09:53
举报
文章被收录于专栏:搜索引擎技术研讨

根据官方文档+看源码+实验总结出来的ES各种提交的作用与原理(对应版本7.2.0).

我本地是用xmind做的, 附上xmind的截图.

ES提交.png
ES提交.png

文字版如下:

ES提交

触发方式

给索引设置

  • PUT /my-index-000001/_settings { "index" : { "refresh_interval" : "1s" } }

给文档增删改请求设置

  • PUT /test/_doc/1?refresh {"test": "test"}

手动触发

  • POST /my-index-000001/_refresh

效果

refresh

  • tlog不截断
  • 文档可见
  • 不会触发段合并
  • 不调用fsync, 不保证持久化
  • 注意: 默认1s触发一次, 但有个特殊设定, 只有30s内接收到至少一个搜索请求的时候, 索引的refresh才会按照设置时间频率触发, 也就是说没有搜索请求的索引的refresh不会自动触发.

flush

  • tlog截断
  • 文档不可见
  • 可能触发段合并
  • 调用fsync, 保证持久化
  • 没有类似于Solr的openSearcher=true选项, 不能让文档可见.

原理

refresh

  • 触发lucene的reopen, 把in-memory buffer转化为in-memory segment.

flush

  • 触发lucene的commit, 将in-memory buffer提交到新的段, 与已有的in-memory segments一起提交到硬盘.

lucene

  • flush
代码语言:txt
复制
- 1. 把内存段写到硬盘
- 2. 不调用fsync
- 3. 不更新segment_N文件
  • commit
代码语言:txt
复制
- 1. 把内存段写到硬盘
- 2. 调用fsync
- 3. 更新segment_N文件

建议

硬提交频率

  • 参考tlog的硬盘大小, 使tlog的大小合理, 否则可能会使重启时间过长

软提交频率

  • 在满足业务需求的情况下尽可能长一些

不要使用kill -9

  • 正确的步骤
代码语言:txt
复制
- 停止索引程序
- 手动硬提交或等待自动提交触发
- 停止ES服务

T-log

作用

  • 异常恢复
  • RealTime Get By ID

每个shard对应一个t-log

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ES提交
    • 触发方式
      • 给索引设置
      • 给文档增删改请求设置
      • 手动触发
    • 效果
      • refresh
      • flush
    • 原理
      • refresh
      • flush
      • lucene
    • 建议
      • 硬提交频率
      • 软提交频率
      • 不要使用kill -9
    • T-log
      • 作用
      • 每个shard对应一个t-log
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档