elasticsearch,merge,Performance,elasticsearch,Merge" /> elasticsearch,merge,Performance,elasticsearch,Merge" />

Performance 大量已删除的文档计数是否会影响ES查询性能

Performance 大量已删除的文档计数是否会影响ES查询性能,performance,elasticsearch,merge,Performance,elasticsearch,Merge,在我的ES集群中,我很少阅读大量索引(开始看到这些索引的性能问题),该集群拥有约5000万个文档,并注意到其中大多数文档的删除量约占文档总数的25%,我知道,在后台合并操作发生时,这些已删除文档的数量会随着时间的推移而减少,但在我的情况下,这些数字始终约占总文件的25%,我有以下问题/顾虑: 这些巨大的删除数量是否会影响搜索性能,因为它们仍然是lucene immutable段的一部分,搜索会发生在所有段上,并返回最新版本的文档,所以不可变段的大小会很大,因为它们包含大量已删除的文档,然后再进行

在我的ES集群中,我很少阅读大量索引(开始看到这些索引的性能问题),该集群拥有约5000万个文档,并注意到其中大多数文档的删除量约占文档总数的25%,我知道,在后台合并操作发生时,这些已删除文档的数量会随着时间的推移而减少,但在我的情况下,这些数字始终约占总文件的25%,我有以下问题/顾虑:

  • 这些巨大的删除数量是否会影响搜索性能,因为它们仍然是lucene immutable段的一部分,搜索会发生在所有段上,并返回最新版本的文档,所以不可变段的大小会很大,因为它们包含大量已删除的文档,然后再进行另一个操作以确定文档的最新版本
  • 如果存在大量已删除文档,定期合并操作是否会花费大量时间且效率低下
  • 有没有什么方法可以一次性删除这些数量庞大的已删除文档,因为后台合并操作似乎跟不上数量庞大的文档

  • 谢谢

    您删除的文档仍然是索引的一部分,因此它们会影响搜索性能(但我无法告诉您这是否会产生巨大影响)

    对于定期合并,Lucene“不愿意”合并重段,因为它需要一些磁盘空间并生成大量IO

    多亏了

    如果您有接近5GB限制的数据段,则在它们大部分由已删除的文档构成之前,它们可能不会自动合并

    您可以使用

    请记住,强制合并可能会对集群产生一些压力,以获得巨大的索引。有一个选项可以只删除文档,这样可以减少负担

    仅删除(可选,布尔值)如果为真,则仅删除 包含文档删除的段。默认为false

    在Lucene中,文档不会从段中删除;只是标记为 删除。在合并过程中,将创建一个新段,该段不会 包含这些文档删除


    关于

    一个快速选项可能是软删除记录,然后可能是硬删除记录的夜间作业。@AshishModi你能解释一下硬删除记录是什么意思吗?你的意思是,首先使用ES索引中的标志进行软删除,然后实际执行删除操作?感谢您提供的有用信息,我将检查所有这些选项并与您联系