以下操作基於elasticsearch版本:5.4(elasticsearch最新版本7.x不適合)
說明:所有操作都在elasticsearch外掛程式中進行。如果你沒有外掛程式,理會其精神,也是可以使用命令列操作的。
首先需明確一點:
elasticsearch中字段的資料型別無法做更新處理,這不像mysql中欄位資料型別可以更新。
因此修改字段資料型別的思路是:
1、先新建乙份新的索引a,新的索引a中,將需要修改的字段資料型別改為你需要更正的型別,其餘欄位與舊的索引b保持一致。
2、將舊索引b中資料複製到新索引a的資料中;
3、刪除舊索引b資料;
4、再建立乙個新索引c,c的要求是索引名稱與b一致,字段資料型別與a一致;
5、將新索引a的資料複製到新索引c中;
6、刪除新索引a資料。
7、此時得到的新索引c就是我們需要的。
1、首先檢視欄位的資料型別,是否真的錯誤。
在瀏覽器中輸入位址,檢視索引下字段的資料型別。
說明:1、 資料查詢ip
2、article 需要查詢的索引名
查詢結果如下:
, "data": }},
"id": }},
"type": ,
"uid": }}
}}}}}
2、新建新索引a,修改自己需要的字段資料型別。此處為了演示,將type型別修改為tex
完整json:
, "data": }},
"id": }},
"type": }},
"uid": }}
}}}}}
3、舊索引資料複製到新索引。
完整json:
, "dest":
}
4、刪除舊索引資料
5、建立另乙個新索引,該索引名稱與舊索引相同,字段資料型別與上面新建索引相同。此處與第二步相同。
6、複製資料到新索引。此處與第三步相同。
7、刪除第乙個新建的索引。此處與第第四步相同。
8、至此就得到了你需要的。
我們可以看到在這個過程中,資料複製了兩次,如果你的elasticsearch資料量比較大,則這個過程將會比較久。
還有乙個別的處理方法,就是在第四步後,我們給新建的索引建立乙個別名,別名和舊索引一致。
}]}
elasticSearch修改資料
elasticsearch幾乎能實時提供資料操作和搜尋功能。預設情況下,從開始索引 更新 刪除資料到出現搜尋結果的時間可以認為需要一秒的時間。這是與sql等其他平台的重要區別,其中資料在事務完成後可以立即使用。在上節中我們給索引建立了乙個文件,命令為 put customer doc 1 prett...
Elasticsearch 併發修改樂觀鎖
來自 1 elasticsearch 的樂觀鎖,可以使用外部系統提供的版本號 這時elasticsearch將只檢查提供的版本是否比當前儲存在索引中的版本大 大多少不重要 如果是成功,否則失敗。在elasticsearch中,更新請求實際上是分為兩個階段,獲取文件,修改文件,然後儲存文件。那麼當兩個...
ElasticSearch修改和刪除文件
修改文件方式一 使用prepareupdate,prepareindex兩者選其一皆可 刪除文件方式一 使用preparedelete刪除文件 client.preparedelete blog2 article article.getid tostring get 修改文件方式二 直接使用upda...