paa*_*chi 30 amazon-web-services elasticsearch
我正在尝试将文档列表转储到AWS弹性搜索实例.它运行正常.然后,突然间它开始抛出这个错误:
{ _index: '<my index name>',
_type: 'type',
_id: 'record id',
status: 403,
error:
{ type: 'cluster_block_exception',
reason: 'blocked by: [FORBIDDEN/8/index write (api)];' } }
Run Code Online (Sandbox Code Playgroud)
我在论坛上查了一下.他们中的大多数人都认为这是一个JVM内存问题.如果它超过92%,AWS将停止对集群/索引的任何写入.但是,当我检查JVM内存时,它显示低于92%.我在这里遗失了什么?
谢谢.
gon*_*lez 57
此错误是Amazon ES服务主动阻止写入以保护群集不会达到红色或黄色状态.它使用这样做index.blocks.write.
原因有两个:
当JVMMemoryPressure指标超过92%持续30分钟时,Amazon ES会触发保护机制并阻止所有写入操作,以防止群集达到红色状态.启用保护后,写入操作将失败并出现ClusterBlockException错误,无法创建新索引,并抛出IndexCreateBlockException错误.
当JVMMemoryPressure指标在五分钟内恢复到88%或更低时,将禁用保护,并取消阻止对群集的写入操作.
Elasticsearch的默认"低水印"为85%,这意味着一旦磁盘使用率超过85%,Elasticsearch就不再为该节点分配分片.Elasticsearch还有一个90%的默认"高水印",此时它会尝试将分片重定位到其他节点.
小智 8
ES 可以在翻转期间或磁盘空间或内存不足时在索引上应用写入块。
为了阻止这些错误,您需要通过设置来删除索引上的写入index.blocks.write块false
Run Code Online (Sandbox Code Playgroud)curl -X PUT -H "Content-Type: application/json" \ 'http://localhost:9200/{index_name}/_settings' \ -d '{ "index": { "blocks": { "write": "false" } } }'
接受的解决方案对我来说还不够,我index.blocks.read_only_allow_delete也必须删除
PUT /my_index/_settings
{
"index.blocks.read_only_allow_delete": null,
"index.blocks.write": null
}
Run Code Online (Sandbox Code Playgroud)
ES版本7.15
| 归档时间: |
|
| 查看次数: |
15152 次 |
| 最近记录: |