自己動手刪改ES的索引
Elasticsearch 有一個API可以所有索引一次刪掉
DELETE /_all
DELETE /*
這個API會把所有的index + document直接刪掉 為安全計,最好把all 跟 wildcard的delete拿掉(預設應該是關掉的)
PUT /_cluster/settings
payload:
{
"persistent" : {
"action.destructive_requires_name" : true
}
}
更改index shard的數量:
shard顧名思義就是碎片 elasticsearch(或者很多其他的nosql db)都會利用類似的投術,把資料庫分割成若干的碎片 從而達到horizontal scaling/high availability等等的目的 而elasticsearch就是把每一個index分成數個shard (預設5個) 若果你的node夠多, 預設5個shard理論上會分佈在不同的node上 這樣做一來可以加速搜索速度(負載分配),二來某個node掛掉的時侯其他node可以只把掛掉那個node所負責的shard重載就好,加快復活的時間 但若果index設定成我這樣 [env]-[service]-YYYY.MM.DD 日認式的索引,問題就出現了 假設我有3個env,5個service的話,每天就有15個index,即是75個shard 而每年就有27375個shard誕生,加上elasticsearch的預設查詢的shard上限是1000… 因此日誌式的index,我會把shard的數量降到2 由於elasticsearch中不能直接更改現有的index shard數量,只能設定template的settings 之後每個index新增的時侯就會沿用該設定
PUT _template/default_min_shard
payload:
{
"index_patterns": ["*"],
"settings": {
"number_of_shards": 2
}
}