问题出现的原因
对一个索引做别名的增加,结果报错,如下所示:
{"type"=>"cluster_block_exception", "reason"=>"blocked by: [FORBIDDEN/12/index read-only / allow delete (api)
这里额外附上别名删除和增加的代码:
// 别名可以删除
PUT /ads_lading_trade_brief_es_02/_settings
{"index.blocks.read_only_allow_delete": null}
// 删除老别名
POST /_aliases
{
"actions": [
{"remove": {"index": "ads_lading_trade_brief_es_02", "alias": "ads_lading_trade_brief_es"}}
]
}
// 为新索引添加别名
POST /_aliases
{
"actions": [
{
"add": {
"index": "ads_lading_trade_brief_es_03",
"alias": "ads_lading_trade_brief_es"
}
}
]
}
问题分析:
这是由于ElasticSearch节点的数据目录data存储空间不足,导致从master主节点接收同步数据的时候失败,此时ElasticSearch集群为了保护数据,会自动把索引分片index置为只读read-only。
解决方法:
- 1 磁盘扩容,可在配置文件中修改ElasticSearch数据存储目录,重启ElasticSearch
- 2 放开索引只读设置,在服务器上通过curl工具发起PUT请求
PUT /ads_lading_trade_brief_es_03/_settings
{
"index": {
"blocks": {
"read_only_allow_delete": "false"
}
}
}
我使用的是第二种方法。
寄语:分享是一种乐趣,你知道的越多,你知道得越少。