我的团队陷入了深渊,被要求在各种各样的大型数据集上对客户进行联合搜索,这些数据集包含有关每个人的不同程度的不同数据(并且没有匹配的标识符),我想知道如何去实施它。
我当时认为Apache Nifi非常适合查询我们的各种数据库,合并结果,通过外部工具对条目进行重复数据删除,然后将结果推送到数据库中,然后查询该数据库以供Elasticsearch实例使用应用程序使用。
因此大致来说是这样的:-
为方便起见,下面的数据从第一个流开始就存在于结果数据库中:-
然后在此数据库表上运行https://github.com/dedupeio/dedupe,这将添加集群ID以帮助进行记录链接,例如:-
然后,第二个流程将查询结果数据库,并将该结果输入到Elasticsearch实例中,以供应用程序API进行查询,该API将使用集群ID链接重复项。
夫妇问题:-
如何在将合并的内容推送到数据库时触发重复数据删除运行?
必然的问题-第二个流程如何知道何时获取结果以推送到Elasticsearch?定期轮询?
我这里也没有考虑任何CDC流程,因为数据库将不断更新,这需要我来处理,所以如果有人解决了类似的问题或使用了不同的方法(对考虑其他技术也很高兴)非常感兴趣。 )。
谢谢!
答案 0 :(得分:1)
用于重复数据删除...
您可能需要编写自定义处理器或使用ExecuteScript。由于它看起来像Python库,因此我猜要为ExecuteScript编写脚本,除非有Java库。
用于触发第二个流程...
您还需要该中间数据库表吗?
如果确实需要它,则可以将PutDatabaseRecord的成功关系作为输入发送到后续ExecuteSQL。
如果不需要它,则只需转到MergeContent-> Dedupe-> ElasticSearch。