自己動手刪改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
  }
}

參考