Ruby on Rails — жемчужина searchkick: cluster_block_exception — FORBIDDEN/12/index только для чтения/разрешить удаление (api) — статус: 403

Я пытаюсь добавить elasticsearch на свой сайт Ruby on Rails, используя searchkick gem. В настоящее время я использую ОС Ubuntu 16.04 TLS.

Я установил elasticsearch 6.2.2 и пока настройки по умолчанию не изменились.

Когда я запускаю curl -X GET 'http://localhost:9200', я получаю:

{
    "name" : "viTKcuN",
    "cluster_name" : "elasticsearch",
    "cluster_uuid" : "aHCpbpvoQd2sieJRWtqI7g",
    "version" : {
        "number" : "6.2.2",
        "build_hash" : "10b1edd",
        "build_date" : "2018-02-16T19:01:30.685723Z",
        "build_snapshot" : false,
        "lucene_version" : "7.2.1",
        "minimum_wire_compatibility_version" : "5.6.0",
        "minimum_index_compatibility_version" : "5.0.0"
    },
    "tagline" : "You Know, for Search"
}

Какой, я думаю, желаемый результат.

Затем я добавил gem 'searchkick', '~> 3.0' в свой Gemfile, запустил bundle install и добавил searchkick в свои модели.

Однако запуск Activity.reindex в терминале приводит к:

Activity.reindex: command not found

Запуск rake searchkick:reindex CLASS=Activity привел к следующей ошибке:

rails searchkick earchkick::ImportError: {"type"=>"cluster_block_exception", "reason"=>"blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"} on item with id '1'

Я пытался запустить curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'

Но затем повторный запуск rake searchkick:reindex CLASS=Activity приводит к следующему:

Elasticsearch::Transport::Transport::Errors::Forbidden: [403] {"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}

Я также попытался добавить searchkick settings: {blocks: {read_only: false}} в модель Activity, но получил ту же ошибку, когда снова запустил rake searchkick:reindex CLASS=Activity.

Как я могу решить эту проблему.


person TamerB    schedule 08.03.2018    source источник


Ответы (2)


Следующее сработало для меня, когда я получил эти запущенные тесты rspec, и первая вставка дБ, устанавливающая тестовую базу данных env, не удалась с этой ошибкой эластичного поиска. Исправление извлечено из здесь, ключ наблюдение:

По умолчанию Elasticsearch, установленный вместе с homebrew в Mac OS, переходит в режим только для чтения, когда на диске остается менее 5 % свободного места.

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}'
person FlimFlam Vir    schedule 07.05.2019
comment
правильная команда, которая сработала для меня, это curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": false}' - person Haseeb Zulfiqar; 23.05.2019

Я исправил это, запустив Activity.search_index.delete в консоли, а затем перезапустив Activity.reindex

person TamerB    schedule 08.03.2018
comment
Это, безусловно, работает, но это эквивалентно форматированию и переустановке Windows, когда есть проблема с вашей ОС. У @FlimFlam Vir правильный хирургический подход. - person Joshua Pinter; 27.04.2020