如何绝对删除ElasticSearch中的内容?

bay*_*ezy 2 lucene elasticsearch elastic-stack

我们使用ELK堆栈进行日志记录.我被要求设计一个过程,以便我们如何删除意外记录的敏感信息.

现在根据我对ElasticSearch(Lucene)如何处理删除和更新数据的阅读仍然在索引中不可用.它将最终在索引合并等时得到清理.

是否有一个进程来运行更新(编辑某些内容)或删除(删除某些内容)并保证删除它?

Val*_*Val 5

更新或删除某些值时,ES会将当前文档标记为已删除并将新文档编入索引.删除的值仍将在索引中可用,但永远不会从搜索中返回.当然,如果有人可以访问底层索引文件,他可能可以使用某些工具(Luke或类似工具)查看索引文件中的内容,并可能查看已删除的敏感数据.

保证标记为已删除的文档确实从索引段中删除的唯一方法是强制合并现有段.

POST /myindex/_forcemerge?only_expunge_deletes=true
Run Code Online (Sandbox Code Playgroud)

但请注意,有一个调用的设置index.merge.policy.expunge_deletes_allowed定义了一个阈值,低于该阈值时强制合并不会发生.默认情况下,此阈值设置为10%,因此如果删除的文档少于10%,则强制合并调用将不会执行任何操作.您可能需要降低阈值才能进行删除...或者可能更容易,请确保不要索引敏感信息.