我司主要使用ElasticSearch作为NOSQL使用,今天报错,查看错误日志如下,ElasticSearch进入“只读”模式,节点无法更改
Config: Error 403 Forbidden: blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];: [cluster_block_exception] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];
问题排查
查看 Elasticsearch 官方文档, 原文如下:
Elasticsearch considers the available disk space on a node before deciding whether to allocate new shards to that node or to actively relocate shards away from that node.
Elasticsearch 在决定是否分配新分片给该节点,或对该节点重新定位分片之前,会先判断该节点存储空间是否足够,如果说你的使用磁盘空间已经超过 95%,ES 会自动将索引 index 置为 read-only 状态。
但是!!!!! 查看Elasticsearch 存储目录和日志目录磁盘空间都是够够的,
解决问题
之前Elasticsearch 磁盘满过,处于只读状态,或者网络波动问题,处于只读状态的索引,只能被查询或者删除。而 ES 还不会自动将索引状态切换回来,就需要我们手动切换了:
curl -XPUT -H "Content-Type: application/json" http://127.0.0.1:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
将127.0.0.1:9200提交成你的ip就可以
**