我有:ElasticSearch数据库全文搜索的目的。
我的要求是:在给定的elasticsearch索引中,我需要检测一些敏感数据,如iban号、信用卡号、护照号、社保号、地址等,并报告给客户。将有复选框作为输入参数。例如,客户可以选择信用卡号码和护照号码,然后单击检测按钮。之后,系统将开始扫描索引,并报告包括信用卡号和护照号的文档。它的目标是有200多个敏感数据类型,客户将能够对这些类型进行多种选择。
我所做的:我创建了一个c应用程序,并使用nest库进行es查询。为了检测每种敏感的数据类型,我在我的c#应用程序中创建了正则表达式和一些特殊的验证规则,这些规则对于手动给定的输入字符串非常有效。
在我的c应用程序中,我用scroll api创建了一个match all查询。当用户单击detect按钮时,我的应用程序将迭代从scroll api返回的所有源记录,并且对于每个记录,应用程序将根据客户端的选择执行敏感数据查找程序代码。
这里的问题是搜索es索引中的所有源记录,提取敏感数据,用大量的文档尽可能快地准备报表。我知道es是为全文搜索而设计的,不是为了扫描整个系统并带来数据。但是现在所有的数据都在elasticsearch中,我需要使用这个数据库来进行检测操作。
我想知道我是否可以用另一种有效的方式来做这件事。写一个没有c应用的ElasticSearch插件能解决这个问题吗?或者有没有更好的解决方案来扫描es索引中的整个源数据?
谢谢你的建议。
1条答案
按热度按时间fafcakar1#
passport number,其他敏感信息检测算法应该在索引期间运行一次,或者作为一个单独的作业异步运行,该作业将使用表示敏感信息存在的标志更新文档。根据标志可以搜索相关文档。
在这种情况下,搜索时间分析将是非常昂贵的,应该避免。