ES报错 进入只读模式 [FORBIDDEN/12/index read-only / allow delete (api)]
ES报错 [FORBIDDEN/12/index read-only / allow delete (api)]问题:使用Elasticsearch记录服务api请求记录时,后台突然一直报错该问题原因是:ElasticSearch进入“只读”模式,只允许删除,导致插入请求记录数据时报错。当ES数据所在目录磁盘空间使用率超过90%后,ES将修改为只读状态,所以可能是磁盘空间不足导致ES不允许写入。解
·
ES报错 [FORBIDDEN/12/index read-only / allow delete (api)]
问题:
使用Elasticsearch记录服务api请求记录时,后台突然一直报错该问题
原因是:ElasticSearch进入“只读”模式,只允许删除,导致插入请求记录数据时报错。
当ES数据所在目录磁盘空间使用率超过90%后,ES将修改为只读状态,所以可能是磁盘空间不足导致ES不允许写入。
可以使用命令:df -hl /
查看内存情况
解决方式:
- 先取消只读模式
# 修改配置,取消只读模式 # _all: 指所有索引,可以针对单个索引,将其改为对应索引名就行 curl -XPUT -H "Content-Type: application/json" http://127.0.0.1/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
- 删掉很久以前没用的日志,这里是用条件删除,好像还有其他方法,没有去试,这种删除必须先取消只读模式才能删除
# 删除记录,删除必须带上索引名,这里是api, # _delete_by_query:根据条件删除 curl -X POST "http://127.0.0.1:9200/api/_delete_by_query" -H 'Content-Type: application/json' -d ' { "query": { "bool": { "must": [ { "range": { "createTime": { "lt": "2021-05-01" } } } ], "must_not": [], "should": [] } } } '
- _delete_by_query删除只是标记这条数据删除了,实际没有删除,可以手动清空一下
这个对这块写的很完整,参考curl -XPOST -H "Content-Type: application/json" 'http://127.0.0.1:9200/api/_forcemerge?only_expunge_deletes=true&max_num_segments=1'
参考:https://cloud.tencent.com/developer/article/1737025
更多推荐
已为社区贡献1条内容
所有评论(0)