我們正在使用版本索引carsElasticsearch 中的檔案external。
然后,我們有時會cars使用Update By Query API和Painless 腳本語言來更新檔案。更新請求如下所示:
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
}
使用 Update By Query API 時,檔案的版本似乎沒有增加。我在Update By Query API 檔案中也找不到任何關于版本更新的資訊。
但是,根據Elasticsearch 詳細介紹 Elasticsearch 版本控制支持的博文,
對該檔案的每次寫入操作,無論是索引、更新還是洗掉,Elasticsearch 都會將版本增加 1。
我現在很困惑。Update By Query API 是否會增加external更新檔案的版本?
uj5u.com熱心網友回復:
當您索引具有外部版本的檔案時,您只提供了一個外部版本號,僅此而已,ES 除了存盤您提供的版本之外不會做任何其他事情。檔案本身未標記為外部版本。
更新單個檔案時,您可以再次提供外部版本號。
但是當通過查詢更新時,唯一可以使用的版本控制是內部的(即版本 ),因為整個更新程序發生在 ES 內部,因為您無法提供任何外部版本號
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481749.html
