elasticsearch - 如何从 ElasticSearch 中绝对删除某些内容?

标签 elasticsearch lucene elastic-stack

我们使用 ELK 堆栈进行日志记录。我被要求设计一个流程来删除意外记录的敏感信息。

现在基于我对 ElasticSearch (Lucene) 如何处理的阅读 deletes and updates数据仍在索引中,只是不可用。随着索引的合并等,它最终会得到清理。

是否有运行更新(编辑某些内容)或删除(删除某些内容)并保证将其删除的过程?

最佳答案

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

确保标记为已删除的文档确实从索引段中删除的唯一方法是 force a merge现有分割市场。

POST /myindex/_forcemerge?only_expunge_deletes=true

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

关于elasticsearch - 如何从 ElasticSearch 中绝对删除某些内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50986201/

相关文章:

elasticsearch - 弹性响应修改器插件

elasticsearch - 插件不适用于ElasticSearch中的FileBeat

elasticsearch - 使用logstash的csv文件输入处理在2/3天后停止工作

json - Kibana对NESTED对象的查询为什么返回估计价格?

elasticsearch - 大半径的Elasticsearch地理距离查询优先级

search - 使用其他查询的结果在Elasticsearch中修改相关性得分

kubernetes - Logstash,如何使用来自事件数据的grok模式

ruby-on-rails - 如何构建任务 'elasticsearch:import:model'

lucene - Lucene.Net 中的多个索引搜索

java - Lucene CustomScoreQuery 不从 FunctionQuery 的 FieldSource 传递值