问题标签 [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.
marklogic - 在协调期间更改 URI 格式
我目前正在使用 Data Hub 开发 MarkLogic。
在将文档写入最终数据库之前,有没有办法在协调期间更改文档的 URI?
加载后的当前 URI 格式:
协调后所需的 URI 格式
其中 Entity
是一个常数值,Location
是一个动态变量
我看到了一篇相关文章,但如果文档已经在数据库中,它会更改 URI。我正在考虑在文档写入最终数据库之前的协调过程中执行此操作。
marklogic - 使用数据中心中的文档值进行选择性协调
是否可以选择性地协调文档,不仅是根据集合过滤,而且还基于特定文档的价值?
目前,以下是我在 Data Hub 中的收集器插件中的示例代码:
如果我想在过滤器中包含来自文档的特定值(按 ElementID 过滤),我应该添加哪些代码修改以仅使特定文档与此元素过滤器协调一致?
以下是 Entity1 的示例文档:
marklogic - 如何加快 MarkLogic Data Hub 中的协调
我目前正在为协调我们的数据进行开发工作。我注意到协调的完成很慢。
我对 NoSQL / MarkLogic 开发相对较新,并且不确定要遵循哪些最佳实践才能实现平稳、更快的协调。
以下是一些事实:
数据加载:
- 暂存中加载的数据来自使用关系数据库的 ERP 系统。数据被提取到 CSV 并加载到 MarkLogic
- 每个关系表数据都被提取到一个 CSV 文件中。每个表都以单独的实体表示。
后期协调:
- 227,826 条记录大约需要 66 分钟才能完成协调
- 1074151 条记录完成统一耗时约 4 小时 19 分钟
协调代码片段:
- 有许多日期计算逻辑(示例如下)
- 主实体从其他实体获取一些元素数据(在下面的示例中,Table2 是其他实体)
- 一些协调数据是一对一的(直接获取)。请参阅下面的示例:
- 有许多 for 循环调用(未嵌套),大约 20 个调用。上面 #2 中的示例:
javascript - 如何在 MarkLogic Harmonization 中添加/显示元素的所有子元素
我正在使用 DataHub 来协调我的Entity
数据。
我试图让我的元素的孩子StatusHistory
。但是,在下面我当前的代码中,只显示了一个子实例。目前StatusHistory
至少有超过 5 条记录/子项。
目标是在StatusHistory
.
以下是我在 content.sjs 中的当前代码
我还尝试迭代getStatusHistory
函数调用并使用该xdmp.nodeInsertChild
函数,但它仍然无法正常工作:
如何显示我的元素的所有子StatusHistory
元素Entity
?
javascript - 如何从 MarkLogic Javascript 中的 xml 中删除数据类型信息?
我有一个通过 MarkLogic 中的 Javascript 生成的 XML 数据:
如何删除数据类型信息,使其看起来像这样:
javascript - 在 MarkLogic Javascript 中删除重复的元素父名称
我正在使用 javascript 协调 MarkLogic 中的数据。目前,对于我的输出,我能够显示所有子元素Activity
,但问题是父元素Activities
也被重复显示。
这是当前输出,<Activities>
仅出现在每个Activity
:
这是我想要的输出,<Activities>
只出现一次
以下是我当前输出的当前代码:
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-filter
:https ://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>
) 和属性 ( class
and )。style
在尝试删除它们时,我探索了两种不同的方法:
- 第一种方法是使用该
in-mem-update
模块从上述content.xqy
脚本中的内存文档表示中删除不需要的节点,作为内容转换流程的一部分。问题是这个过程可能很慢,正如@grtjn 指出的那样,我必须限制并行化以避免超时。 - 第二种方法是使用提交后触发器功能在文档
xdmp:node-delete
被提取到数据库后使用它们来修改它们。但是,当触发条件设置为 时,触发器不会触发document-content("create")
。如果我将条件更改为,它确实会触发document-content("modify")
,但由于某种原因,我无法使用fn:document($trgr:uri)
类似于此 SO 问题的方式访问文档(MarkLogic 9 sjs 触发器无法访问 post-commit() 文档数据)。
xquery - 如何一次性替换多个 XML 节点?数据中心框架
我在 STAGING DB 中有几个文档。
根据一个条件,我需要检查 FINAL 中是否存在具有相同 ID 的文档。
如果是这样,那么我需要将文档的多个节点从 STAGING 替换为 FINAL,然后将其插入。
输出我期待在最终 -
从分期开始,我只需要关注 (value1,value2,value,value4,value7) 并替换它。对于其他值,我有一些不同的条件,所以我必须忽略它们。
我在WRITER.xqy中编写的逻辑-
这给了我
错误 - xdmp:document-insert 的 ARG2 不是节点。
我确实理解它,因为我$envelope
正在迭代所有节点并返回多个信封。
有什么建议可以解决这个问题吗?
marklogic - DHF 和 CPF/警报配置
我正在使用 DHF,我有一个用例需要alerts
为我的final db
. 我正在通过和所需的gradle
两者进行配置。在我的配置中,我怎么知道一个给定的只为我的数据库启用?cpf
alerts
alerts
cpf
final
我知道我可以将 my 设置Domain
为collection
存在于我的final
数据库中,但仍然CPF
会在两者staging
和final
数据库中启用 .. 而且我delete's
的 instaging
会很慢..
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 秒内构建失败