elasticsearch OpenSearch更新操作中需要外部版本支持

hl0ma9xz  于 2023-01-25  发布在  ElasticSearch
关注(0)|答案(1)|浏览(190)

我正在使用OpenSearch索引JSON文档并使其可搜索。所有文档都有EPOCH格式的更新时间戳字段。问题是我可以在文档主体包含较旧更新时间的情况下收到更新请求。如果当前文档更新时间早于OpenSearch中存储的现有文档中的更新时间字段,则我的应用程序应跳过更新
为了满足要求,我在HTTP请求**/test_index/_update/123中添加了外部版本,版本= 1674576432910。
但我收到错误

验证失败:1:内部版本控制不能用于开放式并发控制。请改用if_seq_no和if_primary_term

我读到了关于if_seq_no&if_primary_term字段的内容。它们不能用来解决我的问题。有没有其他人遇到过这个问题并解决了它?请分享。或者如果有人知道我可以安装任何插件来支持这个问题,请分享。

7uzetpgm

7uzetpgm1#

应该使用“if_seq_no”和“if_primary_term”参数来执行开放式并发控制。
要解决此问题,您可以首先使用文档ID从OpenSearch检索现有文档,然后检查更新时间戳字段。如果现有时间戳比更新请求中的时间戳新,则可以跳过更新。否则,可以在更新请求中包含“if_seq_no”和“if_primary_term”参数。沿着更新单据,参数“if_seq_no”设置为已有单据的序号,参数“if_primary_term”设置为已有单据的主术语。
您可以为此使用Update API ...或乐观并发控制(OCC)机制,后者基于_seq_no和_primary_term字段的组合。

相关问题