当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch错误:群集\块\异常[禁止/12/索引只读/允许删除(api)],超过洪泛水位磁盘水印

慕容超
2023-03-14

当尝试像往常一样将文档发布到Elasticsearch时,我遇到了以下错误:

cluster_block_exception [FORBIDDEN/12/index read-only / allow delete (api)];

我在Elasticsearch日志中也看到了这条消息:

flood stage disk watermark [95%] exceeded ... all indices on this node will marked read-only

共有3个答案

袁帅
2023-03-14
curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'

从…起

https://techoverflow.net/2019/04/17/how-to-fix-elasticsearch-forbidden-12-index-read-only-allow-delete-api/

单于奇略
2023-03-14

默认情况下,当您的可用磁盘空间少于5%时,安装的Elasticsearch会进入只读模式。如果您看到类似的错误:

Elasticsearch::传输::传输::E的权限::F:[403]{"错误":{"root_cause":[{"type":"cluster_block_exception","原因":"阻止者:[FORBIDDEN/12/index只读/允许删除(api)];"}],"type":"cluster_block_exception","原因":"阻止者:[FORBIDDEN/12/index只读/允许删除(api)];"},"status": 403}

或者在/usr/local/var/log/elasticsearch中。日志您可以看到类似以下内容的日志:

洪水阶段磁盘水印[95%]超过[nCxquc7PTxKvs6hLkfonvg][nCxquc7][/usr/local/var/lib/elasticsearch/node/0]免费:15.3gb[4.1%],此节点上的所有索引都将标记为只读

然后,您可以通过运行以下命令来修复它:

curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_cluster/settings -d '{ "transient": { "cluster.routing.allocation.disk.threshold_enabled": false } }'
curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
孔冥夜
2023-03-14

当Elasticsearch认为磁盘空间不足,因此将自己置于只读模式时,就会发生这种情况。

默认情况下,Elasticsearch的决定基于可用磁盘空间的百分比,因此在大型磁盘上,即使有很多GB的可用空间,也可能发生这种情况。

洪水水位默认为95%,因此在1TB驱动器上,您需要至少50GB的可用空间,否则Elasticsearch将自动进入只读模式

有关洪水水位水印的文档,请参阅https://www.elastic.co/guide/en/elasticsearch/reference/6.2/disk-allocator.html.

正确的解决方案取决于上下文,例如生产环境和开发环境。

释放足够的磁盘空间,使超过5%的磁盘可用,可以解决这个问题。一旦有足够的磁盘可用,Elasticsearch不会自动退出只读模式,但您必须执行以下操作才能解锁索引:

$ curl -XPUT -H "Content-Type: application/json" https://[YOUR_ELASTICSEARCH_ENDPOINT]:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'

“集群.路由.分配.磁盘.水印.泛洪阶段”设置更改为其他设置。可以将其设置为较低的百分比或绝对值。下面是一个如何从文档中更改设置的示例:

PUT _cluster/settings
{
  "transient": {
    "cluster.routing.allocation.disk.watermark.low": "100gb",
    "cluster.routing.allocation.disk.watermark.high": "50gb",
    "cluster.routing.allocation.disk.watermark.flood_stage": "10gb",
    "cluster.info.update.interval": "1m"
  }
}

同样,完成此操作后,您必须使用上面的curl命令来解锁索引,但在此之后,它们不应再次进入只读模式。

 类似资料:
  • 问题内容: 尝试按正常方式将文档发布到Elasticsearch时,出现此错误: 我还在Elasticsearch日志上看到此消息: 问题答案: 当Elasticsearch认为磁盘空间不足,因此将其置于只读模式时,就会发生这种情况。 默认情况下,Elasticsearch的决定基于可用磁盘空间的 百分比 ,因此在大磁盘上,即使您有许多GB的可用空间,也可能发生这种情况。 泛洪阶段的水印默认为95

  • 我正在运行带有多进程索引的蜘蛛,我想解决这个问题。 我总是收到太多的请求,是否有一个配置可以更改,以允许处理并发请求的阈值更大? 这是全部错误 更新:发现洪水磁盘水印超过,但似乎没有超过! df命令的输出

  • 谁能告诉我这个错误是什么意思吗?Elasticsearch index:/fulltext_2/doc/xxxxx被阻止原因:[禁止/12/索引只读/允许删除我有一个本地Elasticsearch服务器。我已经创建了一个索引fulltext_2,我想插入一些文档。有一个PHP脚本来做这件事。如果我有创建索引的权限,为什么我不能将任何项目插入数据库?发生了什么事?感谢您的帮助。

  • 当我尝试在elasticsearch中存储任何内容时,一个错误显示: 我已经在索引中插入了大约2亿个文档。但我不知道为什么会发生这种错误。我试过: 如前所述:ElasticSearch进入“只读”模式,节点无法更改 结果是: 但是什么都没变。我该怎么办?

  • 问题内容: 我在开发机(单个笔记本)中使用Elasticsearch 1.4.4。一切都设置为默认设置,因为我从未更改任何设置。 启动它时,通常会收到以下消息: 我看到很多这样的“磁盘低水印…超出…”消息。我的情况出了什么问题?如何解决?谢谢! 更新 在这篇文章之前,我在SO中搜索了相关的文章。我发现一个与“高水印…”有关的情况,在这种情况下,磁盘空间不足。就我而言,我检查 了磁盘上是否还有56G

  • 我在我的开发机器(一个笔记本)中使用Elasticsearch 1.4.4。一切都设置为默认值,因为我从未更改任何设置。 当我启动它时,通常会收到以下信息: 我看到很多这样的“低磁盘水印…超过了…”信息。我的案子出了什么问题?如何修复它?谢谢 使现代化 在这篇文章之前,我搜索了相关的帖子。我发现了一个与“高水位线”有关的在这种情况下,磁盘空间很小。在我的情况下,我检查了一下,我的磁盘上还剩下56G