使用 Node client.update() 处理外部版本控制的正确方法

mag*_*nap 5 elasticsearch

设想:

我们正在将部分 Firestore 数据库同步到 ElasticSearch 实例。我们使用外部版本控制,并以毫秒为单位的时间戳作为版本号。

我们正在做什么:

问题:

我们手头没有seq_no,也没有。primary_term我们依靠基于 Firestore 更新时间戳(以毫秒为单位)的外部版本控制的乐观并发控制。

要更新的特定字段是一个计算,它甚至不是 Firestore 中原始文档的一部分,因此每次都简单地将整个文档覆盖到 ES 是不可行的。我们只需要更新 ES 中的一个字段。

还有......问题:

  • 为什么更新 API不包含versionversion_type?也许我们遗漏了一些关于这个概念的东西,这根本不是正确的方法。
  • 如果versionversion_type是故意不在更新 API范围内...这种情况的正确方法是什么?由于我们使用的是外部版本控制,seq_no因此primary_term不应该是相关的。将信息从 ES 保存回 Firebase 对于我们的需要来说非常麻烦。

客户端是 @elastic/elasticsearch:Node 中的 7.9.0,以防万一。

预先非常感谢您。