天天看點

ElasticSearch 因為磁盤空間不夠引起的資料插入錯誤

錯誤描述: ElasticSearch 因為磁盤空間不夠引起的資料插入錯誤。(message [ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];]])

當使用Logstash将MySQL中的資料采用到ES索引中: 出現以下問題, 昨天還可以正常采集mysql資料庫中的資訊, 今天報了錯,解決方案如下:

ElasticSearch 因為磁盤空間不夠引起的資料插入錯誤

問題原因:

索引變成了

隻讀

index read-only / allow delete (api)];"}
           

經過分析,發現是因為ES所在伺服器磁盤空間太低引起,具體解決方案如下:任選一, 我是使用方案二解決的! 一旦在存儲超過95%的磁盤中的節點上配置設定了一個或多個分片的任何索引,該索引将被強制進入

隻讀

模式

方案一:

在kibana開發控制台執行下面語句即可:

PUT _settings
{
  "index": {
    "blocks": {
      "read_only_allow_delete": "false"
    }
  }
}
           

或者

如果kibana無法執行指令,可以使用下面指令解決

curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
           

方案二:

我使用的就是這種方式:

可以了解就是索引是隻讀模式,是以填入資料失敗。因為預設沒改過路徑,實際存儲應該在ES目錄下面。去看ES的啟動盤,發現基本已經滿了。可能确實因為存儲空間的原因。

參照這篇文檔

  • 找到es的配置檔案 elasticsearch.yml,把存儲資料的路徑改為其它空間比較大的盤符。
  • 找到path.data路徑,取消掉注釋,并且指向新的可用空間較大的盤符。重新啟動ES,再插入資料,問題解決。
ElasticSearch 因為磁盤空間不夠引起的資料插入錯誤
ElasticSearch 因為磁盤空間不夠引起的資料插入錯誤

這樣就可以成功采集資料庫中的資訊了!

ElasticSearch 因為磁盤空間不夠引起的資料插入錯誤

繼續閱讀