gpt4 book ai didi

Elasticsearch 版本冲突

转载 作者:行者123 更新时间:2023-11-29 02:57:27 28 4
gpt4 key购买 nike

我已经在 Elasticsearch 中更新了文档。使用更新后,我正在使用他们的 ID 获取相同的文档。它给了我以下回应:

 {
"_index": "b123456",
"_type": "documents",
"_id": "bltde56dd11ba998bab",
"_version": 3,
"found": true,
"_source": {
"title": "index.json",
"url": "/index1",
"tags": [],
"created_at": "2018-06-19T05:02:38.174Z",
"updated_at": "2018-06-19T05:07:57.155Z",
"version": 1,
"fields": [{
"uid": "fname",
"value": "john"
},
{
"uid": "lname",
"value": "test"
}
],
"class": "first"
}


}

在我使用 update_by_query 更新文档后,我向 update_by_query 发送以下请求:

{
"script": {
"source": "ctx._source.title = params.title;ctx._source.url = params.url;ctx._source.created_at = params.created_at;ctx._source.updated_at = params.updated_at;ctx._source.version = params.version;ctx._source.fields = params.fields",
"params": {
"title": "Demo title",
"url": "/demo",
"created_at": "2018-06-19T05:02:38.174Z",
"updated_at": "2018-06-19T05:07:57.155Z",
"version": 2,
"fields": [{
"uid": "fname",
"value": "vicky"
},
{
"uid": "lname",
"value": "test"
}
]
}
},
"query": {
"bool": {
"must": [{
"term": {
"_id": "bltde56dd11ba998bab"
}
},
{
"range": {
"version": {
"lt": 2
}
}
}
]
}
}
}

但它给我状态码:409 和以下错误:

[documents][bltde56dd11ba998bab]: version conflict, current version [3] is different than the one provided [2]

我的文档还包含自定义版本 key 。谁能帮我解决这个问题

最佳答案

为了后代,我将提交这个老问题的答案。出现此问题是因为 _version 字段中 ElasticSearch 的内部版本值在您的初始响应中实际上是 3,而不是 1。

然后您尝试将文档更新为使用外部版本值 2,Elastic 将此视为冲突,因为它在内部认为版本 3 是最新版本,而不是版本 1。实际上,某些原因导致您的外部版本方案和 Elastic 的内部版本方案变得不同步。

另请注意,您的 update 调用中应包含以下参数,以指示该操作应遵循外部版本控制规则,而不是 Elastic 的内部版本控制方案。

"version_type":external

指定此参数需要进行细微但重要的区分。

With version_type set to external, Elasticsearch will store the version number as given and will not increment it. Also, instead of checking for an exact match, Elasticsearch will only return a version collision error if the version currently stored is greater or equal to the one in the indexing command.

有关 Elastic 版本的更多信息可以在他们的 blog post 中找到

关于Elasticsearch 版本冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50924416/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com