我正在尝试将文档列表转储到AWSElasticSearch示例。它运行得很好。然后,它突然开始抛出这个错误:
{ _index: '<my index name>',
_type: 'type',
_id: 'record id',
status: 403,
error:
{ type: 'cluster_block_exception',
reason: 'blocked by: [FORBIDDEN/8/index write (api)];' } }
我查过论坛了。他们中的大多数人说这是JVM内存问题。如果使用率超过92%,AWS将停止对群集/索引的任何写入。然而,当我检查JVM内存时,它显示不到92%。我是不是漏掉了什么?
5条答案
按热度按时间sz81bmfz1#
此错误是Amazon ES服务主动阻止写入,以保护群集不会达到红色或黄色状态。它使用
index.blocks.write
完成此操作。两个原因是:
内存不足
当JVMMory压力指标在30分钟内超过92%时,Amazon ES会触发保护机制并阻止所有写操作,以防止集群进入红色状态。当保护开启时,写入操作失败,并出现ClusterBlockException错误,无法创建新索引,并引发IndexCreateBlockException错误。
当JVMM一带压指标在5分钟内恢复到88%或更低时,保护被禁用,对集群的写操作被解锁。
磁盘空间不足
ElasticSearch的默认“低水位线”为85%,这意味着一旦磁盘使用率超过85%,Elasticearch就不再为该节点分配碎片。ElasticSearch的默认“高水位线”为90%,此时它会尝试将碎片重新定位到其他节点。
falq053o2#
此错误表示AWS ElasticSearch已根据磁盘空间在您的域上放置了块。在85%时,ES将不允许创建任何新索引。为90%时,不能写入任何新文档。
jgwigjjp3#
ES可能在转存期间对索引应用写入块,或者磁盘空间或内存不足。
为了停止这些错误,您需要通过将
index.blocks.write
设置为false
来删除索引上的写入块sd2nnvve4#
对于我来说,接受的解决方案还不够,我还必须删除
index.blocks.read_only_allow_delete
ES版本7.15
dnph8jn45#
如果您尝试写入的索引已被标记为只读,也可能发生这种情况。我遇到过这种情况,是因为索引状态管理配置错误,导致每周的索引在一天后被移到温暖状态。