在 Elasticsearch 中,Update By Query API 会增加更新文档的外部版本吗?
In Elasticsearch does the Update By Query API increment an external version of updated documents?
我们正在使用 external
版本为 Elasticsearch 中的 cars
文档编制索引。
我们有时会使用 Update By Query API and Painless scripting language 更新 cars
文档。更新请求如下所示:
POST http://search/cars/_update/445398312253724778?routing=91e2c33a-52f5-43f4-b8c5-6fb5673ff6e0&refresh=true&timeout=1m
{
"script": {
"source": "if (ctx._source.status != 'NEW') { ctx.op = 'noop' } ctx._source.transition = params.status",
"lang": "painless",
"params": {
"status": "OBSOLETE"
}
},
"scripted_upsert": true
}
使用查询更新API时,文档的版本似乎没有增加。我在 Update By Query API documentation.
中也找不到任何关于版本更新的信息
然而,根据 Elasticsearch' blog post detailing Elasticsearch Versioning Support,
With every write-operation to this document, whether it is an
index,update or delete, Elasticsearch will increment the version by 1.
我现在很迷茫。按查询更新 API 是否会增加更新文档的 external
版本?
当您使用外部版本控制索引文档时,您只是提供了一个外部版本号,仅此而已,ES 除了存储您提供的版本之外不会做任何其他事情。文档本身未标记为外部版本控制。
更新单个文档时,您可以再次提供外部版本号。
但是当通过查询更新时,唯一可以使用的版本控制是内部版本(即版本++),因为整个更新过程发生在 ES 内部,因为您无法提供任何外部版本号
我们正在使用 external
版本为 Elasticsearch 中的 cars
文档编制索引。
我们有时会使用 Update By Query API and Painless scripting language 更新 cars
文档。更新请求如下所示:
POST http://search/cars/_update/445398312253724778?routing=91e2c33a-52f5-43f4-b8c5-6fb5673ff6e0&refresh=true&timeout=1m
{
"script": {
"source": "if (ctx._source.status != 'NEW') { ctx.op = 'noop' } ctx._source.transition = params.status",
"lang": "painless",
"params": {
"status": "OBSOLETE"
}
},
"scripted_upsert": true
}
使用查询更新API时,文档的版本似乎没有增加。我在 Update By Query API documentation.
中也找不到任何关于版本更新的信息然而,根据 Elasticsearch' blog post detailing Elasticsearch Versioning Support,
With every write-operation to this document, whether it is an index,update or delete, Elasticsearch will increment the version by 1.
我现在很迷茫。按查询更新 API 是否会增加更新文档的 external
版本?
当您使用外部版本控制索引文档时,您只是提供了一个外部版本号,仅此而已,ES 除了存储您提供的版本之外不会做任何其他事情。文档本身未标记为外部版本控制。
更新单个文档时,您可以再次提供外部版本号。
但是当通过查询更新时,唯一可以使用的版本控制是内部版本(即版本++),因为整个更新过程发生在 ES 内部,因为您无法提供任何外部版本号