繁体   English   中英

MarkLogic REST 资源 API - 仅使用一个 POST 请求修补多个文档

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM