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

🍬 博主介绍 

👨‍🎓 博主主页:淼淼_喵的博客_CSDN博客-Zookeeper,Hadoop,kafka领域博主

✨主攻领域:【大数据开发】【数据仓库】 【ETL】 【数据分析】【面试分析】

🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋

🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝欢迎评论

🙏作者水平有限,欢迎各位大佬指点,相互习进步!
 

目录

🍬 博主介绍 

删除和更新分析

底层逻辑


删除和更新分析

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

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

首先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

host: 你的ES主机名ip

index: 你要操作的索引名

解释:

/_forcemerge                              就是强制合并的意思

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

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Elasticsearch是一个开源的分布式搜索和分析引擎,用于存储、搜索和分析大量的实时数据。它支持通过将数据同步到binlog来实现数据的同步。 在Elasticsearch中,binlog是一种用于记录数据库更改操作的日志文件。它包含了同步到Elasticsearch的每个操作的详细信息,如插入、更新删除操作。通过解析binlog文件,我们可以将这些操作应用到Elasticsearch中,实现数据的同步。 要实现elasticsearch同步binlog的数据,首先需要设置数据库的binlog日志,以记录数据库操作。然后,利用Elasticsearch的一些工具或插件,如logstash或debezium等,可以解析binlog文件,并将其中的操作应用到Elasticsearch中。 具体步骤如下: 1. 配置数据库的binlog日志,确保其能够正确记录数据库操作。 2. 安装并配置Elasticsearch的binlog解析工具,如logstash或debezium等。这些工具可以读取并解析binlog文件,并将其中的操作转化为Elasticsearch可以识别的格式。 3. 将解析后的binlog操作应用到Elasticsearch中。这可以通过使用上述工具提供的插件或API来实现。 4. 配置同步策略和频率。可以设置同步的时间间隔,以及是否对数据进行过滤和转换。 通过以上步骤,我们可以将数据库中的数据同步到Elasticsearch中,从而实现基于binlog的数据同步。这样就可以在Elasticsearch中进行全文搜索和实时数据分析,为数据处理和查询提供更强大和高效的能力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chad__chang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值