在项目实施过程中遇到ES无法删除索引数据的情况,排查后报错情况如下:
ElasticSearch ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];
原因: es集群数据量增速过快,导致个别es node节点磁盘使用率在%80以上,接近%90 ,由于ES新节点的数据目录data存储空间不足,导致从master主节点接收同步数据的时候失败,此时ES集群为了保护数据,会自动把索引分片index置为只读read-only.
解决办法: 将read-only切换为正常模式,“index.blocks.read_only_allow_delete”: null 需要保证当前登录用户是与ES用户是一致的。
curl -XPUT -H "Content-Type: application/json" http://127.0.0.1:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
如登录用户不一致则会有以下报错:
missing authentication credentials for REST request
原因:访问ES时没添加用户密码配置。 解决:在访问ES前添加用户名密码配置。
curl -XPUT -H "Content-Type: application/json" http://用户名:密码@127.0.0.1:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
|