我们使用ELK堆栈进行日志记录。我被要求设计一个流程,以解决如何删除意外记录的敏感信息。
现在,根据我对ElasticSearch(Lucene)如何处理deletes and updates的了解,该数据仍然在索引中,只是不可用。最终将随着索引的合并而被清理,等等。
是否存在运行更新(以编辑某些内容)或删除(以删除内容)并保证将其删除的过程?
答案 0 :(得分:5)
在更新或删除某些值时,ES会将当前文档标记为已删除并为新文档建立索引。删除的值仍将在索引中可用,但永远不会从搜索中找回。当然,如果有人可以访问基础索引文件,则他可以使用某种工具(Luke或类似工具)查看索引文件中的内容,并有可能看到已删除的敏感数据。
确保标记为已删除的文档确实从索引段中删除的唯一方法是访问现有段的force a merge。
POST /myindex/_forcemerge?only_expunge_deletes=true
但是请注意,有一个名为index.merge.policy.expunge_deletes_allowed
的设置定义了一个阈值,在该阈值以下不会发生强制合并。默认情况下,此阈值设置为10%,因此,如果删除的文档少于10%,则强制合并调用将不执行任何操作。您可能需要降低阈值才能进行删除...或更容易些,请确保不要索引敏感信息。