elasticsearch 6索引更改为仅在几秒后读取

时间:2018-01-05 18:20:06

标签: elasticsearch

我想在mac os上使用elasticsearch 6,但是当我通过将文档添加到无存在索引来创建索引后,几秒钟索引更改为只读,如果添加文档或更新文档会出现此错误

"error" : {
    "root_cause" : [
      {
        "type" : "cluster_block_exception",
        "reason" : "blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"
      }
    ],
    "type" : "cluster_block_exception",
    "reason" : "blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"
  },
  "status" : 403
}

我测试禁用只读

curl -H'Content-Type: application/json' -XPUT localhost:9200/test/_settings?pretty -d'
{
    "index": {
        "blocks.read_only": false
    }
}'
{
  "acknowledged" : true
}

但没有任何改变

我用ubuntu测试另一个系统上的弹性6它没问题然后我认为我的系统可能有问题但弹性搜索5.6.2正常工作没有任何错误

弹性日志

[2018-01-05T21:56:52,254][WARN ][o.e.c.r.a.DiskThresholdMonitor] [gCjouly] flood stage disk watermark [95%] exceeded on [gCjoulysTFy1DDU7f7dOWQ][gCjouly][/Users/peter/Downloads/elasticsearch-6.1.1/data/nodes/0] free: 15.7gb[3.3%], all indices on this node will marked read-only

4 个答案:

答案 0 :(得分:27)

我有这个问题 我认为在弹性6中添加新设置以在空硬时小于5%时关闭指数 你可以通过elasticsearch.yml

中的下一行禁用它
 cluster.routing.allocation.disk.threshold_enabled: false

然后重启elasticsearch。 我希望这对你有用

答案 1 :(得分:7)

复制/粘贴到Kibana控制台中的便利性

# disable threshold alert
PUT /_cluster/settings
{
  "persistent" : {
        "cluster.routing.allocation.disk.threshold_enabled" : false
    }
}

# unlock indices from read-only state
PUT /_all/_settings
{
  "index.blocks.read_only_allow_delete": null
}

答案 2 :(得分:4)

如果您正在Docker中进行弹性搜索,则Docker可能空间不足。运行docker volume prune可以删除未使用的本地卷,或者在Docker Preferences中增加磁盘映像的大小。

答案 3 :(得分:0)

运行这些命令

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}'

如果您使用的是Docker容器,则必须确保容器中有足够的空间,并且其使用率应小于85%。

您可以通过运行以下命令清除悬空的图像和体积来弥补空间

# remove the dangling images
docker rmi $(docker images -f "dangling=true" -q)

# remove the dangling volumes
docker volume rm $(docker volume ls -qf dangling=true)

如果您仍然遇到空间问题,最好进入Docker > Preferences

以增加docker的空间。

enter image description here enter image description here

为docker腾出空间后,您需要运行在本文顶部共享的上述CURL命令。