สิ่งนี้เกิดขึ้นเมื่อ Elasticsearch คิดว่าดิสก์มีพื้นที่เหลือน้อยดังนั้นจึงทำให้ตัวเองอยู่ในโหมดอ่านอย่างเดียว
โดยค่าเริ่มต้นการตัดสินใจของ Elasticsearch จะขึ้นอยู่กับเปอร์เซ็นต์ของเนื้อที่ดิสก์ที่ว่างดังนั้นบนดิสก์ขนาดใหญ่สิ่งนี้อาจเกิดขึ้นได้แม้ว่าคุณจะมีพื้นที่ว่างหลายกิกะไบต์ก็ตาม
โดยค่าเริ่มต้นลายน้ำจะอยู่ที่ 95% ดังนั้นในไดรฟ์ 1TB คุณต้องมีพื้นที่ว่างอย่างน้อย 50GB มิฉะนั้น Elasticsearch จะทำให้ตัวเองอยู่ในโหมดอ่านอย่างเดียว
สำหรับเอกสารเกี่ยวกับขั้นตอนน้ำท่วมลายน้ำดูhttps://www.elastic.co/guide/en/elasticsearch/reference/6.2/disk-allocator.html
โซลูชันที่เหมาะสมขึ้นอยู่กับบริบทตัวอย่างเช่นสภาพแวดล้อมการผลิตเทียบกับสภาพแวดล้อมการพัฒนา
โซลูชันที่ 1: เพิ่มเนื้อที่ว่างบนดิสก์
การเพิ่มเนื้อที่ว่างบนดิสก์ให้เพียงพอเพื่อให้มีพื้นที่ว่างมากกว่า 5% ของดิสก์จะช่วยแก้ปัญหานี้ได้ Elasticsearch จะไม่นำตัวเองออกจากโหมดอ่านอย่างเดียวโดยอัตโนมัติเมื่อดิสก์ว่างเพียงพอคุณจะต้องทำสิ่งนี้เพื่อปลดล็อกดัชนี:
$ 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"
}
}
อีกครั้งหลังจากทำสิ่งนี้คุณจะต้องใช้คำสั่ง curl ด้านบนเพื่อปลดล็อกดัชนี แต่หลังจากนั้นไม่ควรเข้าสู่โหมดอ่านอย่างเดียวอีก