ES的删除和更新,旧数据到低是如何处理的?

简介: 根据ES的读写入原理,大家都知道ES写入时每秒从内存缓冲区(memory buffer)生成小的segment,将其递交给系统缓存(OS filesystem cache)中,后台会定期的对这些小的segment 合并成一个大的segment段

目录

删除和更新分析

底层逻辑


image.gif编辑

删除和更新分析

当我们执行删除操作和更新操作时,实际上是在索引中的文档上‘’标记‘’了删除,我们索性称之为旧文档吧。当我们操作的是更新的动作时,我们的文档实际上是重新插入的,我们称之为新文档

到这里是否你有一个疑问,那么旧文档是逻辑上的删除喽,那物理上的删除我们怎么做呢?

首先ES后台有自己的清除旧文档的时机, 我们从ES的官方描述可以看出

deleting a document doesn’t immediately remove the document from disk; it just marks it as deleted. Elasticsearch will clean up deleted documents in the background as you continue to index more data.

译文:

删除文档不会立即从磁盘中删除文档;它只是将其标记为已删除。Elasticsearch将在您继续索引更多数据时,在后台清理已删除的文档。

很清晰,当做删除文档时ES后台会帮我们在继续索引更多数据时,清理这些“标记”已删除的文档,拿更新文档也是一样的道理呗。

底层逻辑

根据ES的读写入原理,大家都知道ES写入时每秒从内存缓冲区(memory buffer)生成小的segment,将其递交给系统缓存(OS filesystem cache)中,后台会定期的对这些小的segment 合并成一个大的segment段,这个时候就是物理删除的文档的时候,为什么说索引更多数据时,我的理解是索引其他数据时,系统是按页读的,会把逻辑删除的旧数据和更新的新数据,这个时候再系统缓存区就会有交集,正好遇到了段合并,这个时候就会把文档逻辑删除。

当然ES也会存在读不到这个文档,也就是新旧数据不在一个segment中的情况,这种情况我们可以用手动的进行操作

curl -X PUT http://host:9200/index/_forcemerge?max_number_segments=1

image.gif

host: 你的ES主机名ip

index: 你要操作的索引名

解释:

/_forcemerge                              就是强制合并的意思

max_number_segments=1        就是将最大的段的个数设置为1,这样新旧数据就一定在一个段了

目录
相关文章
|
运维 负载均衡 算法
MySQL MGR模式介绍
MGR是Mysql Group Replication(组复制)的缩写,Mysql5.7之后是以一个Mysql插件的形式集成在Mysql中,用于创建可伸缩、高可用、可容错的复制架构,是Mysql集群的一种形式
2608 0
MySQL MGR模式介绍
|
传感器 小程序
微信小程序新版隐私协议弹窗实现最新版
微信小程序新版隐私协议弹窗实现最新版
2905 1
|
12月前
|
存储 缓存 监控
极致 ElasticSearch 调优,让你的ES 狂飙100倍!
尼恩分享了一篇关于提升Elasticsearch集群的整体性能和稳定性措施的文章。他从硬件、系统、JVM、集群、索引和查询等多个层面对ES的性能优化进行分析,帮助读者提升技术水平。
|
监控 固态存储 安全
源码剖析:Elasticsearch 段合并调度及优化手段
源码剖析:Elasticsearch 段合并调度及优化手段
|
传感器 人工智能 监控
|
SQL 分布式计算 Java
Spark 为什么比 Hive 快
Spark与Hive在数据处理上有显著区别。Spark以其内存计算和线程级并行提供更快的速度,但稳定性受内存限制。相比之下,Hive虽较慢,因使用MapReduce,其稳定性更高,对内存需求较小。在Shuffle方式上,Spark的内存 Shuffle 比Hive的磁盘 Shuffle 更高效。综上,Spark在处理速度和Shuffle上占优,Hive则在稳定性和资源管理上更胜一筹。
1009 0
|
JavaScript 前端开发
JS实现select框实现模糊搜索
JS实现select框实现模糊搜索
|
机器学习/深度学习 人工智能 自然语言处理
【AI大模型】Transformers大模型库(八):大模型微调之LoraConfig
【AI大模型】Transformers大模型库(八):大模型微调之LoraConfig
379 0