MarkLogic - S3导入

时间:2016-11-17 12:52:00

标签: amazon-s3 marklogic mlcp

我们可以使用

将数据从Amazon S3导入MarkLogic
  1. JavaScript / xQuery API
  2. MarkLogic内容泵
  3. 还有其他方式吗?
  4. 请分享参考资料(如果有)。

4 个答案:

答案 0 :(得分:3)

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

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

对于更大的数据集,您可能希望从外部管理该过程。以下是几个选项:

  • 将数据从S3导出到本地文件系统,然后使用MLCP将其发送到MarkLogic
  • 插入一个文档,其中包含您要导入的S3资源列表;生成任务,每个任务将采用一组资源并使用xdmp:document-get()
  • 导入它们
  • 使用Java代码从S3中提取文档(或一批文档),然后使用Java Client API将该数据插入MarkLogic
  • 一旦MarkLogic 9问世,请使用Data Movement SDK,这样可以使这样的项目更容易(截至本文撰写时,DMSDK仍在开发中)

答案 1 :(得分: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存储的有效网址
  • user:password替换为有效值
  • localhost:8052替换为您的MarkLogic应用服务器的网址

答案 2 :(得分:0)

最近我遇到了同样的问题,我使用了以下MLCP代码来复制数据,并且有效。

mlcp export -host {host} -port {port} -username {username} -password {password} -output_file_path {S3 path} -collection_filter {collection name to be moved}

答案 3 :(得分:0)

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

参见EC2 guideStackoverflow similar question