在前面的旅程中,為了實驗需求,我對 Index 的命名不太上心,結果我把完整的資料建在一個我現在對命名不太滿意的 Index 中,怎麼辧?
在任何領域的菜鳥時期都有一個共同的特徵,就是好傻好天真…。為了嘗試修改 Mapping, 我想用下面的 API , 把 把成交量的 data type 改成 double。
PUT /history-prices-week/_mapping
{
"properties": {
"volume" : {
"type" : "integer"
}
}
}
然後會得到一個很直接的 Error (下圖)
原來,一旦 Index 已經添加了 Mapping,就不能進行修改。除了一些描述 Field 的 Mapping Parameters 外。今天暫時不討論這個。
總之,Index 的 Mapping 一旦定了,就不要動它。背後的原因與 Elasticsearch 的資料演算法相關,例如修改 data type ,ES 就得重新運算,這個工,等同於 "reindex"。
上面的實驗已經讓我有了不詳預感。更改 Index Name 一定也不是簡單的事。果然,如果要把 Index 重新命名,需要做的事,也是上面提到的 "reindex"。那就來玩玩看吧:
PUT /history-prices-daily
POST _reindex
{
"source": {
"index": "history-prices-python"
},
"dest": {
"index": "history-prices-daily"
}
}
首先,建立新的 Index,然後執行 reindex。花了一點時間,看來是成功了!
把 Index info 倒出來看看:
GET /_cat/indices?v
看來資料筆數都一致!
抽查一筆盤後資訊看看:
GET /history-prices-daily/_doc/23172020-09-23
沒問題,聞西!
看看舊的 Index , 佔的空間還真不少,既然分手了,就砍了吧!
DELETE /history-prices-python
今天又玩了一個新花招。接下來會花點時間建一些技術指標,這就不寫在鐵人賽裡了,明天開始,可以開始探索 Kibana 的一些視覺化功能啦!