यह तब होता है जब एलेस्टिक्स खोज को लगता है कि डिस्क अंतरिक्ष पर कम चल रही है इसलिए यह खुद को केवल-पढ़ने के लिए मोड में रखता है।
डिफ़ॉल्ट रूप से एलिटेसर्च का निर्णय डिस्क स्थान के प्रतिशत पर आधारित है जो मुफ़्त है, इसलिए बड़े डिस्क पर यह तब भी हो सकता है जब आपके पास बहुत सारे गीगाबाइट मुक्त स्थान हो।
बाढ़ चरण वॉटरमार्क डिफ़ॉल्ट रूप से 95% है, इसलिए 1TB ड्राइव पर आपको कम से कम 50GB खाली स्थान की आवश्यकता होती है या एलीस्टेसर्च खुद को रीड-ओनली मोड में डाल देगा।
बाढ़ चरण वॉटरमार्क के बारे में डॉक्स के लिए https://www.elastic.co/guide/en/elasticsearch/reference/6.2/disk-allocator.html देखें ।
सही समाधान संदर्भ पर निर्भर करता है - उदाहरण के लिए उत्पादन वातावरण बनाम विकास का वातावरण।
समाधान 1: डिस्क स्थान खाली करें
पर्याप्त डिस्क स्थान खाली करना ताकि डिस्क का 5% से अधिक मुक्त होना इस समस्या को हल करेगा। काफी समय से डिस्क मुक्त होने के बाद, एलियटसर्च अपने आप ही रीड-ओनली मोड से बाहर नहीं निकलेगा, हालांकि इंडेक्स को अनलॉक करने के लिए आपको कुछ इस तरह करना होगा:
$ curl -XPUT -H "Content-Type: application/json" https://[YOUR_ELASTICSEARCH_ENDPOINT]:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
समाधान 2: बाढ़ चरण वॉटरमार्क सेटिंग बदलें
"cluster.routing.allocation.disk.watermark.flood_stage"
सेटिंग को कुछ और में बदलें । इसे या तो कम प्रतिशत या पूर्ण मान पर सेट किया जा सकता है। डॉक्स से सेटिंग कैसे बदलें, इसका एक उदाहरण यहां दिया गया है :
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"
}
}
फिर, ऐसा करने के बाद आपको सूचकांकों को अनलॉक करने के लिए ऊपर दिए गए कर्ल कमांड का उपयोग करना होगा, लेकिन इसके बाद उन्हें फिर से रीड-ओनली मोड में नहीं जाना चाहिए।