Macのローカル環境のElasticsearchにデータ追加時に、cluster_block_exception
が表示された件
現象
Elasticsearchにデータを追加しようとした時に、書き込みエラーが表示された
データ追加
$ curl --include -XPOST "http://localhost:9200/foo_index/_doc" \
-H 'Content-Type: application/json' \
-d '{
"user": "peke",
"message": "this message."
}'
データの追加時のレスポンス
{
"error": {
"root_cause": [
{
"type": "cluster_block_exception",
"reason": "index [foo_index] blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block];"
}
],
"type": "cluster_block_exception",
"reason": "index [foo_index] blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block];"
},
"status": 429
}
原因
Elasticsearchの設定を確認
$ curl --include -XGET "http://localhost:9200/foo_index/_settings?pretty"
{
"foo_index" : {
"settings" : {
"index" : {
"number_of_shards" : "1",
"blocks" : {
"read_only_allow_delete" : "true"
},
"provided_name" : "foo_index",
"creation_date" : "1601874837243",
"number_of_replicas" : "1",
"uuid" : "vNNFrvi_R3e6xpFXS3Xmqg",
"version" : {
"created" : "7090299"
}
}
}
}
}
"read_only_allow_delete" : "true" になっている。
読み取り専用モードになっているのが原因のもよう
以下のページにも書いてあったが、空きディスク容量が5%未満の場合、読み取り専用モードになるもよう
How to fix Elasticsearch 'FORBIDDEN/12/index read-only' - Today I Learned
By default, Elasticsearch installed with homebrew on Mac OS goes into read-only mode when you have less than 5% of free disk space. If you see errors similar to this:
デフォルトでは、Mac OSにhomebrewをインストールしたElasticsearchは、空きディスク容量が5%未満の場合、読み取り専用モードになります。
ディスクを確認
(5%未満かというと微妙だが)たしかにディスク残量は少なくなっていた。
HDDの残量を増やして再度、設定を確認
$ curl --include -XGET "http://localhost:9200/foo_index/_settings?pretty"
{
"foo_index": {
"settings": {
"index": {
"creation_date": "1601879846599",
"number_of_shards": "1",
"number_of_replicas": "1",
"uuid": "pZXw3Ng7SeGZym9ORrkKaQ",
"version": {
"created": "7090299"
},
"provided_name": "foo_index"
}
}
}
}
blocksが消えました!!
再度データ追加
データ追加
$ curl --include -XPOST "http://localhost:9200/foo_index/_doc" \
-H 'Content-Type: application/json' \
-d '{
"user": "peke",
"message": "this message."
}'
データの追加時のレスポンス
{
"_index": "foo_index",
"_type": "_doc",
"_id": "-uCZ93QB4SFaJHY-3iHL",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 2
}
データ追加ができました
追加の結果確認
$ curl --include -XGET "http://localhost:9200/foo_index/_doc/9xNyi3MBhHaU2qi75ayU?pretty"
{
"_index": "foo_index",
"_type": "_doc",
"_id": "--Ca93QB4SFaJHY-aCFx",
"_version": 2,
"_seq_no": 2,
"_primary_term": 2,
"found": true,
"_source": {
"user": "peke",
"message": "this message."
}
}