Как отменить установку индекса Elasticsearch для чтения?

Поэтому я просто установил один из моих индексов только для чтения, и теперь хочу удалить его.

Чтобы установить его только для чтения:

PUT my_index/_settings
{ "index": { "index.blocks.read_only" : true } }

Когда я попытался удалить его, я получил этот ответ:

ClusterBlockException[blocked by: [FORBIDDEN/5/index read-only (api)];]

Затем я попытался установить индекс как readonly false:

PUT my_index/_settings
{ "index": { "index.blocks.read_only" : false } }

Но это дает то же сообщение об ошибке, что и выше. Итак, как установить readonly обратно на false?

Ответ 1

Правильный способ сделать es index только для чтения

PUT your_index/_settings
{
  "index": {
    "blocks.read_only": true
  }
}

измените true на false, чтобы отменить его.

Вы устанавливаете нединамическую настройку с помощью

   {
      "index": {
        "index.blocks.read_only": false
      }
    }

который, я думаю, не был вашим намерением. Также я думаю, что вы должны были увидеть ошибку во время первой операции, так как не динамические настройки могут обновляться только на close indices.

бег

POST your_index/_close

а затем попробуйте изменить его.

Ответ 2

Ответы действительно старые, поэтому я добавлю и ответ с упругим 6:

PUT /[_all|<index-name>]/_settings
{
  "index.blocks.read_only_allow_delete": null
}

https://www.elastic.co/guide/en/elasticsearch/reference/6.x/disk-allocator.html

К вашему сведению (для контекста): я столкнулся с индексами только для чтения из-за нехватки диска и получил сообщения об ошибках из logstash:

...retrying failed action with response code: 403 ({"type"=>"cluster_block_exception", "reason"=>"blocked"

elasticsearch:
ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];]

Ответ 3

В версии 2.x ElasticSearch (ES) вы должны сделать следующее

PUT your_index/_settings

{
  "index": {
    "blocks": {
      "write": "false",
      "read_only": "false"
    }
  }
}

При настройке индекса на read_only на значение true внутренне ES изменяет значение write на true, а просто вернув read_only в значение false все еще не позволяет вам обновлять индекс, поэтому вам нужно обновить параметр write в явном виде.

Ответ 4

Если у вас установлена Kibana, вы можете перейти к своему URL-адресу kibana:

Management (Left pane) -> Elasticseach Index Management -> Select your Index -> Edit Settings

затем обновите:

"index.blocks.read_only_allow_delete": "false"

Кроме того, чтобы установить его глобально для kibana, вы можете перейти к dev tools (левая панель) и сделать следующий запрос:

PUT _settings
{
  "index": {
    "blocks": {
      "read_only_allow_delete": "false"
    }
  }
}

Ответ 5

curl -X PUT "localhost:9200/_all/_settings" -H 'Content-Type: application/json' -d'{ "index.blocks.read_only" : false } }'