MarkLogic - S3 导入
MarkLogic - S3 Import
我们可以使用
将数据从 Amazon S3 导入 MarkLogic
- JavaScript/xQuery API
- MarkLogic 内容泵
- 还有其他方法吗?
请分享参考资料(如果有)。
我无论如何都不是 AWS 专家,但如果您知道 S3 上的数据位置,您可以使用 xdmp:document-get(), with an http:// prefix in the $location, to retrieve documents. You can also use 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 仍在开发中)
使用 /documents 服务将 test.xml 文件从 AWS S3 存储桶加载到与您的 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
替换为有效的 URL AWS S3 存储
- 将
user:password
替换为有效值
- 将
localhost:8052
替换为您的 MarkLogic 应用程序服务器的 URL
最近我遇到了同样的问题,我使用下面的 MLCP 代码复制数据,并且成功了。
mlcp export -host {host} -port {port} -username {username} -password {password} -output_file_path {S3 path} -collection_filter {collection name to be moved}
如果您在管理工具中配置 aws 凭据,则可以使用 "s3://bucket/key" 形式的 URL 访问 S3 进行读取或写入。
见EC2 guide
参见
我们可以使用
将数据从 Amazon S3 导入 MarkLogic- JavaScript/xQuery API
- MarkLogic 内容泵
- 还有其他方法吗?
请分享参考资料(如果有)。
我无论如何都不是 AWS 专家,但如果您知道 S3 上的数据位置,您可以使用 xdmp:document-get(), with an http:// prefix in the $location, to retrieve documents. You can also use 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 仍在开发中)
使用 /documents 服务将 test.xml 文件从 AWS S3 存储桶加载到与您的 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
替换为有效的 URL AWS S3 存储 - 将
user:password
替换为有效值 - 将
localhost:8052
替换为您的 MarkLogic 应用程序服务器的 URL
最近我遇到了同样的问题,我使用下面的 MLCP 代码复制数据,并且成功了。
mlcp export -host {host} -port {port} -username {username} -password {password} -output_file_path {S3 path} -collection_filter {collection name to be moved}
如果您在管理工具中配置 aws 凭据,则可以使用 "s3://bucket/key" 形式的 URL 访问 S3 进行读取或写入。
见EC2 guide
参见