Ciò accade quando Elasticsearch pensa che il disco stia esaurendo lo spazio, quindi si mette in modalità di sola lettura.
Per impostazione predefinita, la decisione di Elasticsearch si basa sulla percentuale di spazio su disco disponibile, quindi su dischi di grandi dimensioni ciò può accadere anche se si hanno molti gigabyte di spazio libero.
La filigrana della fase di inondazione è del 95% per impostazione predefinita, quindi su un'unità da 1 TB sono necessari almeno 50 GB di spazio libero o Elasticsearch si metterà in modalità di sola lettura.
Per i documenti sulla filigrana della fase di inondazione, vedere https://www.elastic.co/guide/en/elasticsearch/reference/6.2/disk-allocator.html .
La giusta soluzione dipende dal contesto, ad esempio un ambiente di produzione rispetto a un ambiente di sviluppo.
Soluzione 1: liberare spazio su disco
Liberare spazio su disco sufficiente in modo che più del 5% del disco sia libero risolverà questo problema. Elasticsearch non uscirà automaticamente dalla modalità di sola lettura una volta che il disco è libero a sufficienza, dovrai fare qualcosa del genere per sbloccare gli indici:
$ curl -XPUT -H "Content-Type: application/json" https://[YOUR_ELASTICSEARCH_ENDPOINT]:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
Soluzione 2: modifica l'impostazione della filigrana della fase di inondazione
Cambia l' "cluster.routing.allocation.disk.watermark.flood_stage"
impostazione in qualcos'altro. Può essere impostato su una percentuale inferiore o su un valore assoluto. Ecco un esempio di come modificare l'impostazione dai documenti :
PUT _cluster/settings
{
"transient": {
"cluster.routing.allocation.disk.watermark.low": "100gb",
"cluster.routing.allocation.disk.watermark.high": "50gb",
"cluster.routing.allocation.disk.watermark.flood_stage": "10gb",
"cluster.info.update.interval": "1m"
}
}
Di nuovo, dopo averlo fatto dovrai usare il comando curl sopra per sbloccare gli indici, ma dopo non dovrebbero tornare in modalità di sola lettura.