Ruby on Rails-searchkick gem:cluster_block_exception-FORBIDDEN / 12 / index只读/允许删除(api)-status“:403

Tam*_*erB 3 ubuntu ruby-on-rails elasticsearch searchkick

我正在尝试使用将其添加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"
}
Run Code Online (Sandbox Code Playgroud)

我想这是所需的输出。

然后gem 'searchkick', '~> 3.0',我将其添加到我的Gemfile中,然后运行bundle install并添加searchkick到我的模型中。

但是,Activity.reindex在终端中运行会导致:

Activity.reindex: command not found
Run Code Online (Sandbox Code Playgroud)

运行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'
Run Code Online (Sandbox Code Playgroud)

我尝试跑步 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}
Run Code Online (Sandbox Code Playgroud)

我还尝试将其添加searchkick settings: {blocks: {read_only: false}}到“活动”模型中,但rake searchkick:reindex CLASS=Activity再次运行时出现相同的错误。

我怎么解决这个问题。

Fli*_*Vir 20

当我运行 rspec 测试并且设置测试 db env 的第一个 dB 插入因此弹性搜索错误而失败时,以下对我有用。从这里提取的修复,关键观察:

默认情况下,当您的可用磁盘空间少于 5% 时,在 Mac OS 上随 Homebrew 安装的 Elasticsearch 会进入只读模式。

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}'
Run Code Online (Sandbox Code Playgroud)

  • 对我有用的正确命令是`curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": false}' (6认同)

Tam*_*erB 8

我通过Activity.search_index.delete在控制台中运行来修复它,然后重新运行Activity.reindex