Apache Nifi-联合搜索

时间:2018-08-17 07:45:40

标签: elasticsearch duplicates apache-nifi record-linkage python-dedupe

我的团队陷入了深渊,被要求在各种各样的大型数据集上对客户进行联合搜索,这些数据集包含有关每个人的不同程度的不同数据(并且没有匹配的标识符),我想知道如何去实施它。

我当时认为Apache Nifi非常适合查询我们的各种数据库,合并结果,通过外部工具对条目进行重复数据删除,然后将结果推送到数据库中,然后查询该数据库以供Elasticsearch实例使用应用程序使用。

因此大致来说是这样的:-

enter image description here

为方便起见,下面的数据从第一个流开始就存在于结果数据库中:-

enter image description here

然后在此数据库表上运行https://github.com/dedupeio/dedupe,这将添加集群ID以帮助进行记录链接,例如:-

enter image description here

然后,第二个流程将查询结果数据库,并将该结果输入到Elasticsearch实例中,以供应用程序API进行查询,该API将使用集群ID链接重复项。

夫妇问题:-

  • 如何在将合并的内容推送到数据库时触发重复数据删除运行?

  • 必然的问题-第二个流程如何知道何时获取结果以推送到Elasticsearch?定期轮询?

我这里也没有考虑任何CDC流程,因为数据库将不断更新,这需要我来处理,所以如果有人解决了类似的问题或使用了不同的方法(对考虑其他技术也很高兴)非常感兴趣。 )。

谢谢!

1 个答案:

答案 0 :(得分:1)

用于重复数据删除...

您可能需要编写自定义处理器或使用ExecuteScript。由于它看起来像Python库,因此我猜要为ExecuteScript编写脚本,除非有Java库。

用于触发第二个流程...

您还需要该中间数据库表吗?

如果确实需要它,则可以将PutDatabaseRecord的成功关系作为输入发送到后续ExecuteSQL。

如果不需要它,则只需转到MergeContent-> Dedupe-> ElasticSearch。