如何在MarkLogic Data Hub Framework中中止部分但不是全部摄取流

如何在MarkLogic Data Hub Framework中中止部分但不是全部摄取流,marklogic,marklogic-dhf,Marklogic,Marklogic Dhf,我们正在使用MarkLogic数据中心框架,并通过REST多文档写入文档端点接收UnitTemporal数据库中的文档 现在,有时我们会通过这种方式接收未更改的文档更新。显然,在这种情况下,我们不希望在MarkLogic中添加这些文档,因为unitemporal字符将导致有缺陷的时间戳和不必要的存储空间 我们已经编写了一些代码来检测重复(使用哈希),但是,我们不知道如何在处理同一请求中的非重复文档时中止对重复文档的摄取。也就是说,当单个请求同时包含非重复和重复文档时,我们如何防止只写入非重复文档

我们正在使用MarkLogic数据中心框架,并通过REST多文档写入文档端点接收UnitTemporal数据库中的文档

现在,有时我们会通过这种方式接收未更改的文档更新。显然,在这种情况下,我们不希望在MarkLogic中添加这些文档,因为unitemporal字符将导致有缺陷的时间戳和不必要的存储空间


我们已经编写了一些代码来检测重复(使用哈希),但是,我们不知道如何在处理同一请求中的非重复文档时中止对重复文档的摄取。也就是说,当单个请求同时包含非重复和重复文档时,我们如何防止只写入非重复文档。Data Hub框架没有任何插件来修改文档编写(因为这是由REST api控制的)。我们试图抛出一个
fn:error()
在内容插件中,但不幸的是,这会中止整个多文档写入,而不仅仅是那些导致错误的文档的写入。

我在黑暗中拍摄了一些东西,没有看到您的代码,但我想您可以返回一个空序列,而不是
fn:error
xdmp:document insert
在您检测到重复的情况下,应该可以正常工作。

我们最终与MarkLogic解决方案架构师讨论了这一点,结论是默认v1/documents api不可能做到这一点


为了解决这个问题,我们编写了自己的定制api作为v1/resources的一部分。此api只调用数据中心框架代码,然后编写文档(如果文档不重复)

是的,我们已经试过了,但是不起作用。如果在数据中心框架中将文档转换为空序列,则文档API仍会写入空文档。