2

我们可以使用将数据从 Amazon S3 导入 MarkLogic

  1. JavaScript/xQuery API
  2. MarkLogic 内容泵
  3. 还有什么办法吗?

请分享参考,如果有的话。

4

4 回答 4

3

我无论如何都不是 AWS 专家,但是如果您知道 S3 上数据的位置,您可以使用xdmp:document-get() (在 $location 中带有 http:// 前缀)来检索文档。您还可以使用xdmp:http-get()来查询文档的位置。一旦该命令返回,您就可以使用通常的 xdmp:document-insert。

这种方法应该适用于少量文档。如果您要导入大量集合,则必须考虑事务超时的可能性。

对于更大的数据集,您可能希望在外部管理流程。这里有几个选项:

  • 将数据从 S3 导出到本地文件系统,然后使用MLCP将其发送到 MarkLogic
  • 插入一个文档,其中包含要导入的 S3 资源列表;生成任务,每个任务将获取一组这些资源并使用 xdmp:document-get() 导入它们
  • 使用 Java 代码从 S3 中提取一个文档(或一批文档),然后使用Java 客户端 API将该数据插入 MarkLogic
  • 一旦 MarkLogic 9 出来,使用Data Movement SDK,它旨在使这样的项目更容易(在撰写本文时,DMSDK 仍在开发中)
于 2016-11-17T16:24:47.457 回答
0

使用 /documents 服务将 AWS S3 存储桶中的 test.xml 文件加载到与您的 REST API 实例关联的数据库中:

curl https://s3.amazonaws.com/yourbucket/test.xml | curl -v --digest --user user:password -H "Content-Type: application/xml" -X PUT -d @- "localhost:8052/v1/documents?uri=/docs/test.xml"
  • 替换https://s3.amazonaws.com/yourbucket/test.xml 为 AWS S3 存储的有效 URL
  • 替换user:password为有效值
  • 替换localhost:8052为您的 MarkLogic 应用服务器的 URL
于 2017-11-20T23:09:35.540 回答
0

最近我遇到了同样的问题,我使用下面的 MLCP 代码复制数据,它工作正常。

mlcp export -host {host} -port {port} -username {username} -password {password} -output_file_path {S3 path} -collection_filter {collection name to be moved}
于 2017-12-19T14:45:51.257 回答
0

如果您在管理工具中配置您的 aws 凭证,则可以使用“s3://bucket/key”形式的 URL 来访问 S3 以进行读取或写入。

请参阅EC2 指南 请参阅Stackoverflow 类似问题

于 2017-12-23T16:28:41.967 回答