[英]MarkLogic REST Resources API - patch multiple documents using only one POST request
我有一个关于使用 REST API 在 MarkLogic 数据库中修补文档的问题。
我有一个用 .NET Core 编写的服务,我使用 MarkLogic 作为我的数据存储。 就我而言,我必须修补数千个文档,如果可能的话,我不想提出数千个请求。 更具体地说 - 我必须在 JSON 文档的某些部分添加一些属性。 遵循本指南:
我知道,使用 PATCH 请求我们一次只能更新一个文档,所以我尝试制作这样的 POST(现在只有一个示例补丁操作)
POST http://host:port/v1/documents HTTP/1.1
Authorization: Basic autorization
Content-Type: multipart/mixed; boundary=BOUNDARY
--BOUNDARY
Content-Type: application/json
Content-Disposition: category=content; attachment; filename=/documents/first_document_to_update.json
X-HTTP-Method-Override: PATCH
{
"patch": [
{
<patch property insert definition>
}
]
}
--BOUNDARY--
但它只是在 Content-Disposition header 的 uri 中创建了一个包含 BOUNDARY 内容的文档。 我还尝试在 POST 请求上直接使用 X-HTTP-Method-Override header,它也没有成功 - 我得到了
{
"errorResponse": {
"statusCode": 400,
"status": "Bad Request",
"messageCode": "REST-REQUIREDPARAM",
"message": "REST-REQUIREDPARAM: (err:FOER0000) Required parameter: uri"
}
}
所以我的结论是不可能使用一个 POST 请求对多个文档进行补丁更新,对吗? 或者我错过了一些重要的东西?
MarkLogic 版本:10
为什么不提出数千个请求?
如果您以多线程方式执行此操作,则可以完成更多工作,而不必担心大量事务超时或超出限制并出错。 您可以将负载分散到整个集群,而不是仅使用一个节点来完成所有工作。
即使您知道如何一次性完成多个任务,我也建议您使用许多小请求进行多线程处理,类似于CoRB作业。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.