问题标签 [marklogic-dhf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
59 浏览

marklogic - 在协调期间更改 URI 格式

我目前正在使用 Data Hub 开发 MarkLogic。

在将文档写入最终数据库之前,有没有办法在协调期间更改文档的 URI?

加载后的当前 URI 格式:

协调后所需的 URI 格式

其中 Entity是一个常数值,Location是一个动态变量

我看到了一篇相关文章,但如果文档已经在数据库中,它会更改 URI。我正在考虑在文档写入最终数据库之前的协调过程中执行此操作。

0 投票
2 回答
121 浏览

marklogic - 使用数据中心中的文档值进行选择性协调

是否可以选择性地协调文档,不仅是根据集合过滤,而且还基于特定文档的价值?

目前,以下是我在 Data Hub 中的收集器插件中的示例代码:

如果我想在过滤器中包含来自文档的特定值(按 ElementID 过滤),我应该添加哪些代码修改以仅使特定文档与此元素过滤器协调一致?

以下是 Entity1 的示例文档:

0 投票
2 回答
191 浏览

marklogic - 如何加快 MarkLogic Data Hub 中的协调

我目前正在为协调我们的数据进行开发工作。我注意到协调的完成很慢。
我对 NoSQL / MarkLogic 开发相对较新,并且不确定要遵循哪些最佳实践才能实现平稳、更快的协调。

以下是一些事实:

数据加载:

  1. 暂存中加载的数据来自使用关系数据库的 ERP 系统。数据被提取到 CSV 并加载到 MarkLogic
  2. 每个关系表数据都被提取到一个 CSV 文件中。每个表都以单独的实体表示。

后期协调:

  1. 227,826 条记录大约需要 66 分钟才能完成协调
  2. 1074151 条记录完成统一耗时约 4 小时 19 分钟

协调代码片段:

  1. 有许多日期计算逻辑(示例如下)

  1. 主实体从其他实体获取一些元素数据(在下面的示例中,Table2 是其他实体)

  1. 一些协调数据是一对一的(直接获取)。请参阅下面的示例:

  1. 有许多 for 循环调用(未嵌套),大约 20 个调用。上面 #2 中的示例:
0 投票
0 回答
74 浏览

javascript - 如何在 MarkLogic Harmonization 中添加/显示元素的所有子元素

我正在使用 DataHub 来协调我的Entity数据。

我试图让我的元素的孩子StatusHistory。但是,在下面我当前的代码中,只显示了一个子实例。目前StatusHistory至少有超过 5 条记录/子项。

目标是在StatusHistory.

以下是我在 content.sjs 中的当前代码

我还尝试迭代getStatusHistory函数调用并使用该xdmp.nodeInsertChild函数,但它仍然无法正常工作:

如何显示我的元素的所有子StatusHistory元素Entity

0 投票
3 回答
44 浏览

javascript - 如何从 MarkLogic Javascript 中的 xml 中删除数据类型信息?

我有一个通过 MarkLogic 中的 Javascript 生成的 XML 数据:

如何删除数据类型信息,使其看起来像这样:

0 投票
2 回答
62 浏览

javascript - 在 MarkLogic Javascript 中删除重复的元素父名称

我正在使用 javascript 协调 MarkLogic 中的数据。目前,对于我的输出,我能够显示所有子元素Activity,但问题是父元素Activities也被重复显示。

这是当前输出,<Activities>仅出现在每个Activity

这是我想要的输出,<Activities>只出现一次

以下是我当前输出的当前代码:

0 投票
1 回答
277 浏览

marklogic - MLCP 内容转换和触发器可以在文档摄取期间一起使用吗?

据我了解,MLCP 转换和触发器都可用于修改摄取的文档。不同之处在于内容转换在摄取期间对内存中的文档对象进行操作,而触发器可以在创建文档后触发。

所以在我看来,我没有理由不能同时使用它们。我的用例是在将文档提取到数据库后,我需要更新文档的某些节点。我使用触发器的原因是因为在使用in-mem-update模块的 MLCP 转换中运行相同的逻辑总是导致摄取失败,大概是由于文件大小过大和我尝试更新的节点数量过多。

2018-08-22 23:02:24 错误 TransformWriter:546 - 异常:解析 HTTP 标头时出错:连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机无法连接回应

到目前为止,我还不能将内容转换和触发器结合起来。当我在 MLCP 摄取期间启用转换时,触发器未触发。当我禁用转换时,触发器没有问题。

我不能同时使用它们有什么内在原因吗?还是与我的配置有关的问题?谢谢!

编辑:

我想根据@ElijahBernstein-Cooper、@MadsHansen 和@grtjn(谢谢!)的建议,提供一些澄清和报告结果的背景。我正在使用 MarkLogic 数据中心框架将 PDF 文件(有些非常大)作为二进制文件提取,并将文本提取为 XML。我基本上遵循了这个例子,除了我使用xdmp:pdf-convert的是xdmp:document-filterhttps ://github.com/marklogic/marklogic-data-hub/blob/master/examples/load-binaries/plugins/entities/Guides/input/LoadAsXml/内容/内容.xqy

虽然xdmp:pdf-convert似乎比 更好地保留了 PDF 结构xdmp:document-filter,但它还包括一些我不需要的样式节点 ( <link>and <style>) 和属性 ( classand )。style在尝试删除它们时,我探索了两种不同的方法:

  1. 第一种方法是使用该in-mem-update模块从上述content.xqy脚本中的内存文档表示中删除不需要的节点,作为内容转换流程的一部分。问题是这个过程可能很慢,正如@grtjn 指出的那样,我必须限制并行化以避免超时。
  2. 第二种方法是使用提交后触发器功能在文档xdmp:node-delete被提取到数据库后使用它们来修改它们。但是,当触发条件设置为 时,触发器不会触发document-content("create")。如果我将条件更改为,它确实会触发document-content("modify"),但由于某种原因,我无法使用fn:document($trgr:uri)类似于此 SO 问题的方式访问文档(MarkLogic 9 sjs 触发器无法访问 post-commit() 文档数据)。
0 投票
1 回答
468 浏览

xquery - 如何一次性替换多个 XML 节点?数据中心框架

我在 STAGING DB 中有几个文档。

根据一个条件,我需要检查 FINAL 中是否存在具有相同 ID 的文档。

如果是这样,那么我需要将文档的多个节点从 STAGING 替换为 FINAL,然后将其插入。

输出我期待在最终 -

从分期开始,我只需要关注 (value1,value2,value,value4,value7) 并替换它。对于其他值,我有一些不同的条件,所以我必须忽略它们。

我在WRITER.xqy中编写的逻辑-

这给了我

错误 - xdmp:document-insert 的 ARG2 不是节点。

我确实理解它,因为我$envelope正在迭代所有节点并返回多个信封。

有什么建议可以解决这个问题吗?

0 投票
0 回答
68 浏览

marklogic - DHF 和 CPF/警报配置

我正在使用 DHF,我有一个用例需要alerts为我的final db. 我正在通过和所需的gradle两者进行配置。在我的配置中,我怎么知道一个给定的只为我的数据库启用?cpfalertsalertscpffinal

我知道我可以将 my 设置Domaincollection存在于我的final数据库中,但仍然CPF会在两者stagingfinal数据库中启用 .. 而且我delete's的 instaging会很慢..

0 投票
1 回答
295 浏览

marklogic - MarkLogic 部署错误'/config/query not found for write'

版本:9.0.4

通过 gradle 部署,使用 'gradle mlDeploy' 命令。

  • 错误信息

com.marklogic.client.ResourceNotFoundException:本地消息:/config/query 未找到写入。服务器消息:请求失败。未从服务器收到错误正文

这是带有堆栈跟踪的日志。

任务:hubPreInstallCheck com.marklogic.hub.impl.DataHubImpl@3692dcf0 加载模块时出错,原因:本地消息:/config/query not found for write。服务器消息:请求失败。未从服务器 com.marklogic.client.ResourceNotFoundException 收到错误正文:本地消息:未找到 /config/query 用于写入。服务器消息:请求失败。com.marklogic.client.impl.OkHttpServices.putValue(OkHttpServices.java:2729) 的 com.marklogic.client.impl.OkHttpServices.putPostValueImpl(OkHttpServices.java:2860) 的服务器未收到错误正文.impl.QueryOptionsManagerImpl.writeOptions(QueryOptionsManagerImpl.java:158) 在 com.marklogic.client.ext.modulesloader.impl.DefaultModulesLoader.lambda$installQueryOptions$3(DefaultModulesLoader.java:508) 在 com。

FAILURE:构建失败并出现异常。

  • 出了什么问题:任务“:mlDeployApp”执行失败。

    com.marklogic.client.ResourceNotFoundException:本地消息:/config/query 未找到写入。服务器消息:请求失败。未从服务器收到错误正文

  • 尝试:使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

  • 例外是:org.gradle.api.tasks.TaskExecutionException:任务':mlDeployApp'的执行失败。在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:103) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73) 在 org.gradle .api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51) 在 org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59) 在 org.gradle.api.internal .tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) 在 org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java: concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) 原因:java.lang.RuntimeException: com.marklogic.client.ResourceNotFoundException :本地消息:/config/query 未找到写入。服务器消息:请求失败。com.marklogic.appdeployer.impl.AbstractAppDeployer.executeCommand(AbstractAppDeployer.java:111) 处 com.marklogic.appdeployer.impl.AbstractAppDeployer.executeCommand(AbstractAppDeployer.java:111) 处的服务器未收到错误正文.appdeployer.impl.AbstractAppDeployer.deploy(AbstractAppDeployer.java:70) at com.marklogic.appdeployer.AppDeployer$deploy.call(Unknown Source) at com.marklogic.gradle.task.DeployAppTask.deployApp(DeployAppTask.groovy:32)在 org.gradle。DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:113) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:95) ... 104更多原因:com.marklogic.client.ResourceNotFoundException:本地消息:/config/query not found for write。服务器消息:请求失败。com.marklogic.client.impl.OkHttpServices.putPostValueImpl(OkHttpServices.java:

  • 在https://help.gradle.org获得更多帮助

36 秒内构建失败