2

让我们想象一下这种情况 Alice 和 Bob 连接到同一个 kuzzle 服务器。有一个文件结构如下:

{
  "nom": "Festival de l'automne",
  "participants": [id1, id2, ...]
}

Alice 和 bob 想要几乎同时更新文档。如果使用kuzzle.document.update()我必须使用以前存储在 Alice 或 Bob 的客户端上的值来更新参与者数组。这可能导致冲突或数据丢失。

我的问题是有没有办法使用以前的值服务器端更新“参与者”数组?或者有没有办法直接使用弹性搜索查询来使用用户脚本,如

{
  "script" : "ctx._source.participants += participants",
  "params" : {
    "participants" : "idx"
  }
}
4

1 回答 1

2

出于安全原因(权限升级和可能对服务器执行 DOS 的繁重脚本),Kuzzle 不会公开 Elasticsearch 脚本功能。

您应该公开一个特定的 API 操作,以原子方式将新值附加到数组中。此 API 操作应使用Integrated Elasticsearch Client来使用无痛脚本。

您可以在文档中找到有关如何处理数组的更多信息

于 2021-05-24T19:50:52.750 回答