Podczas próby wysyłania dokumentów do Elasticsearch w normalny sposób otrzymuję ten błąd:
cluster_block_exception [FORBIDDEN/12/index read-only / allow delete (api)];
Widzę również ten komunikat w dziennikach Elasticsearch:
flood stage disk watermark [95%] exceeded ... all indices on this node will marked read-only
elasticsearch
Sean Hammond
źródło
źródło
Odpowiedzi:
Dzieje się tak, gdy Elasticsearch uważa, że na dysku jest mało miejsca, więc przechodzi w tryb tylko do odczytu.
Domyślnie decyzja Elasticsearch opiera się na odsetku wolnego miejsca na dysku, więc na dużych dyskach może się to zdarzyć, nawet jeśli masz wiele gigabajtów wolnego miejsca.
Znak wodny etapu zalewania wynosi domyślnie 95%, więc na dysku 1 TB potrzebujesz co najmniej 50 GB wolnego miejsca lub Elasticsearch przełączy się w tryb tylko do odczytu.
Dokumenty dotyczące znaku wodnego etapu zalewania można znaleźć pod adresem https://www.elastic.co/guide/en/elasticsearch/reference/6.2/disk-allocator.html .
Właściwe rozwiązanie zależy od kontekstu - na przykład środowisko produkcyjne czy programistyczne.
Rozwiązanie 1: zwolnij miejsce na dysku
Zwolnienie wystarczającej ilości miejsca na dysku, aby więcej niż 5% dysku było wolne, rozwiąże ten problem. Elasticsearch nie wyjdzie automatycznie z trybu tylko do odczytu, gdy wystarczająca ilość dysku będzie wolna, musisz zrobić coś takiego, aby odblokować indeksy:
Rozwiązanie 2: Zmień ustawienie znaku wodnego etapu zalewania
Zmień
"cluster.routing.allocation.disk.watermark.flood_stage"
ustawienie na coś innego. Może być ustawiony na niższy procent lub wartość bezwzględną. Oto przykład, jak zmienić ustawienie z poziomu dokumentów :Ponownie, po wykonaniu tej czynności, będziesz musiał użyć powyższego polecenia curl, aby odblokować indeksy, ale potem nie powinny one ponownie przechodzić w tryb tylko do odczytu.
źródło
Domyślnie zainstalowany Elasticsearch przechodzi w tryb tylko do odczytu, gdy masz mniej niż 5% wolnego miejsca na dysku. Jeśli widzisz błędy podobne do tego:
Lub w /usr/local/var/log/elasticsearch.log możesz zobaczyć logi podobne do:
Następnie możesz to naprawić, uruchamiając następujące polecenia:
źródło
Z
https://techoverflow.net/2019/04/17/how-to-fix-elasticsearch-forbidden-12-index-read-only-allow-delete-api/
źródło
{"error":{"root_cause":[{"type":"index_not_found_exception","reason":"no such index [null] and no indices exist"
z twojego polecenia jakiś pomysł?_all
. Musiałem ręcznie zastosować to do każdego indeksu._all
nazwą indeksu i powtórz żądanie dla każdego indeksu.