Elasticsearch 或是在 Kibana 上建立的所有 Objects (Dashboard, Visualize, Index-Pattern, Search) 等等東西幾乎都存在 elasticsearch:9200/.kibana 這個 index,而 .kibana 內彼此 Object 都關連 Id number 有異動其中一項都會影響 index Id 的處理
例如,每個 Dashboard, Visualize 都會關聯到 index-pattern,如果遇到需要重建 index-pattern 的時候就會遇到所有 Object 都會遺失 index-pattern Id,這篇會講一下 index-pattern 重建時如何修復 Object。
- 匯出所有 Object
這個 Objects 會包含所有 Dashboard, Visualize, Index-Pattern, Search … 等資訊
- Export 會拿到
export.ndjson
,先找到重建的 index-pattern Id
以 defaultIndex (*) 為例,Id 為 f3ec7a90-9efc-11ea-afbd-9f17bd085fe1
{
"attributes": {
"buildNum": 30810,
"defaultIndex": "f3ec7a90-9efc-11ea-afbd-9f17bd085fe1"
},
"id": "7.7.0",
"references": [ ],
"type": "config",
"updated_at": "2020-05-26T03:02:10.070Z",
"version": "WzEzMTMsMV0="
}
- 找到其他 Object 修改相關與 Id
f3ec7a90-9efc-11ea-afbd-9f17bd085fe1
的 Object。
{
"attributes": {
"description": "",
"kibanaSavedObjectMeta": {
"searchSourceJSON": "...",
"title": "Nginx and Apache Top 10 IPs",
"uiStateJSON": "..."
},
"id": "...",
"migrationVersion": {...},
"references": [
{
"id": "f3ec7a90-9efc-11ea-afbd-9f17bd085fe1",
"name": "kibanaSavedObjectMeta.searchSourceJSON.index",
"type": "index-pattern"
},
{
"id": "f3ec7a90-9efc-11ea-afbd-9f17bd085fe1",
"name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index",
"type": "index-pattern"
}
],
"type": "visualization",
"updated_at": "2020-05-25T07:29:10.596Z",
"version": "WzEzNCwxXQ=="
}
把 references.0.[‘id’] 內的值更換成 defaultIndex Id 就行了,但可能有多個 Object 要修改,這時可以善用編輯器的「搜尋取代」一次修改
最後再從 Kibana 上把修改好的 export.ndjson import Objects 就完成修復了。