带你读《Elastic Stack 实战手册》之39:——3.4.2.20.Refresh/flush(中)

简介: 带你读《Elastic Stack 实战手册》之39:——3.4.2.20.Refresh/flush(中)

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.20.Refresh/flush(上) https://developer.aliyun.com/article/1229332


Elasticsearch 中的 flush

 

Flush 实质上意味着将内存缓冲区中的所有文档都写入新的 Lucene Segment,如下面的图所示。 这些连同所有现有的内存段一起被提交到磁盘,ES 6.7 之后,为了支持 CCR 跨集群复制,translog 默认会保留12小时。commit 本质上就是 Lucene commit。


image.png

 

 

Flush 会每30分钟定期触发,也可以在 Translog 达到 512MB 大小时触发。 这些设置可以防止 Lucene 提交带来的不必要的成本。

 

Segment 段合并

 

由于自动刷新流程每秒会创建一个新的段,这样会导致短时间内的段数量暴增。而段数目太多会带来较大的麻烦。 每一个段都会消耗文件句柄、内存和 CPU 运行周期。更重要的是,每个搜索请求都必须轮流检查每个段;所以段越多,搜索也就越慢。

 

Elasticsearch 通过在后台进行段合并来解决这个问题。小的段被合并到大的段,然后这些大的段再被合并到更大的段。

 

段合并的时候会将那些旧的已删除文档从文件系统中清除。被删除的文档(或被更新文档的旧版本)不会被拷贝到新的大段中。

 

启动段合并不需要你做任何事。进行索引和搜索时会自动进行。这个流程像在下图中表示的, “两个提交了的段和一个未提交的段正在被合并到一个更大的段” 中提到的一样工作:

 


1、当索引的时候,刷新(refresh)操作会创建新的段并将段打开以供搜索使用。

2、合并进程选择一小部分大小相似的段,并且在后台将它们合并到更大的段中。这并不会中断索引和搜索。

 

image.png


两个提交了的段和一个未提交的段正在被合并到一个更大的段

 

3、一旦合并结束,老的段被删除,说明合并完成:

 

l 新的段被刷新(flush)到了磁盘。 写入一个包含新段且除旧的和较小的段的新提交点。

l 新的段被打开用来搜索。

l 老的段被删除。

 

image.png


合并大的段需要消耗大量的 I/O 和 CPU 资源,如果任其发展会影响搜索性能。Elasticsearch 在默认情况下会对合并流程进行资源限制,所以搜索仍然 有足够的资源很好地执行。

 

Forcemerge 强制合并

 

forcemerge API 是强制合并 API。它会将一个分片强制合并到 max_num_segments 参数指定大小的段数目。 这样做的意图是减少段的数量(通常减少到一个),来提升搜索性能。

 

forcemerge API 不应该被用在一个正在被活跃使用或者一个正积极更新的索引。后台合并流程已经可以很好地完成工作。forcemerge 会阻碍这个进程。不要干扰它!

 

在特定情况下,使用 forcemerge API 颇有益处。例如在日志这种用例下,每天、每周、每月的日志被存储在一个索引中。 老的索引实质上是只读的;它们也并不太可能会发生变化。

 

在这种情况下,使用 forcemerge 优化老的索引,将每一个分片合并为一个单独的段就很有用了;这样既可以节省资源,也可以使搜索更加快速:

 

POST /my-index-000002/_forcemerge?max_num_segments=1

合并索引中的每个分片为一个单独的段

 

请注意,使用 forcemerge API 触发段合并的操作不会受到任何资源上的限制。这可能会消耗掉你节点上全部的 I/O 资源, 使其没有余裕来处理搜索请求,从而有可能使集群失去响应。如果你想要对索引执行 forcemerge,你需要先使用分片分配把索引移到一个安全的节点再执行,或者在业务低峰期执行。


《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.20.Refresh/flush(下) https://developer.aliyun.com/article/1229329

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
存储 安全 算法
3.【Elasticsearch】Elasticsearch从入门到放弃-权重及打分
【Elasticsearch】Elasticsearch从入门到放弃-权重及打分
3.【Elasticsearch】Elasticsearch从入门到放弃-权重及打分
ES数据删除优化
ES数据删除优化
597 0
|
Arthas 监控 Java
|
机器学习/深度学习 缓存 并行计算
NVIDIA Tesla GPU系列P4、T4、P40以及V100参数性能对比
NVIDIA Tesla系列GPU适用于高性能计算(HPC)、深度学习等超大规模数据计算,Tesla系列GPU能够处理解析PB级的数据,速度比使用传统CPU快几个数量级,NVIDIA Tesla GPU系列P4、T4、P40以及V100是Tesla GPU系列的明星产品,云服务器吧分享NVIDIA.
86297 1
|
消息中间件 存储 Kafka
10倍降本、10倍无损弹性!Kafka Serverless 基础版与专业版重磅发布!
云消息队列 Kafka 版基于 Apache Kafka 构建,提供高吞吐量与高可扩展性的分布式消息队列服务,广泛应用于日志收集、监控数据聚合、流式数据处理及在离线分析等场景,是 AI 与大数据时代企业数据处理体系的核心组件。
|
消息中间件 存储 运维
从 Kafka 2.x 到 Kafka 3.x:升级之旅
从 Kafka 2.x 到 Kafka 3.x:升级之旅
3056 2
|
数据可视化
8个常见的数据可视化错误以及如何避免它们
本文揭示了8个数据可视化常见错误:误导色彩对比、过多的数据图表、省略基线、误导性标签、错误的可视化方法、不实的因果关系、放大有利数据和滥用3D图形。强调清晰、准确和洞察力的重要性,提醒制作者避免使用过多颜色、一次性展示大量数据、错误图表类型以及展示无关相关性等。正确可视化能有力支持决策,不应牺牲真实性以追求视觉效果。
1557 6
|
存储 分布式计算 Apache
官宣|Apache Paimon 毕业成为顶级项目,数据湖步入实时新篇章!
Apache Paimon 在构建实时数据湖与流批处理技术领域取得了重大突破,数据湖步入实时新篇章!
4525 6
官宣|Apache Paimon 毕业成为顶级项目,数据湖步入实时新篇章!
|
存储 弹性计算 对象存储
ECS快照原理
云盘快照原理包括全量和增量快照。首次快照为全量,备份所有数据块;后续快照仅备份变化部分。快照存储在OSS中,同城冗余或本地冗余根据地域不同而定。删除快照时,按数据块引用关系释放空间。快照容量基于快照链统计,全量快照加所有增量大小。快照不占用云盘空间,但产生存储费用。
|
消息中间件 监控 算法
Kafka 常用工具脚本总结
Kafka 常用工具脚本总结
955 0

热门文章

最新文章

下一篇
开通oss服务