如何中止 MarkLogic Data Hub Framework 中的部分而非全部摄取流
How to abort some but not all ingest flows in MarkLogic Data Hub Framework
我们正在使用 MarkLogic 数据中心框架,并通过 REST 多文档写入文档端点在单时态数据库中摄取文档。
现在,有时我们会通过这种未更改文档的方式接收文档更新。显然,在那种情况下,我们不想在 MarkLogic 中添加这些文档,因为单时性会导致有缺陷的时间戳和不必要的存储 space。
我们已经编写了一些代码来检测重复项(使用散列),但是,我们不知道如何在处理同一请求中的非重复文档时中止重复文档的摄取。也就是说,当单个请求同时包含非重复和重复的文档时,我们如何防止只写入非重复的文档。 Data Hub Framework 没有任何插件来修改文档编写(因为这是由 REST api 控制的)。我们试图在内容插件中抛出一个 fn:error()
但不幸的是,它会中止整个多文档写入,而不仅仅是那些导致错误的文档的写入。
我在黑暗中拍摄了一些东西,没有看到你的代码,但我想你可以 return 一个空序列而不是 fn:error
或 xdmp:document-insert
在以下情况下您检测到重复项,应该可以正常工作。
我们最终与 MarkLogic 解决方案架构师讨论了这个问题,得出的结论是默认 v1/documents api.
这是不可能的
我们为解决这个问题所做的是编写我们自己的自定义 api 作为 v1/resources 的一部分。这个 api 只是调用数据中心框架代码,然后写入文档(如果它们不重复)。
我们正在使用 MarkLogic 数据中心框架,并通过 REST 多文档写入文档端点在单时态数据库中摄取文档。
现在,有时我们会通过这种未更改文档的方式接收文档更新。显然,在那种情况下,我们不想在 MarkLogic 中添加这些文档,因为单时性会导致有缺陷的时间戳和不必要的存储 space。
我们已经编写了一些代码来检测重复项(使用散列),但是,我们不知道如何在处理同一请求中的非重复文档时中止重复文档的摄取。也就是说,当单个请求同时包含非重复和重复的文档时,我们如何防止只写入非重复的文档。 Data Hub Framework 没有任何插件来修改文档编写(因为这是由 REST api 控制的)。我们试图在内容插件中抛出一个 fn:error()
但不幸的是,它会中止整个多文档写入,而不仅仅是那些导致错误的文档的写入。
我在黑暗中拍摄了一些东西,没有看到你的代码,但我想你可以 return 一个空序列而不是 fn:error
或 xdmp:document-insert
在以下情况下您检测到重复项,应该可以正常工作。
我们最终与 MarkLogic 解决方案架构师讨论了这个问题,得出的结论是默认 v1/documents api.
这是不可能的我们为解决这个问题所做的是编写我们自己的自定义 api 作为 v1/resources 的一部分。这个 api 只是调用数据中心框架代码,然后写入文档(如果它们不重复)。