ตั้งแต่ Elasticsearch 6.7 ขึ้นมานั้น
มี feature ชื่อว่า Index Lifecycle management (ILM) เพิ่มเข้ามา
ใช้สำหรับการจัดการ index ใน elasticsearch
ซึ่งทำให้เราสามารถจัดการ index ได้ง่ายขึ้น
ทั้งเรื่องของขนาดข้อมูล
ทั้งเรื่องของระยะเวลาในการเก็บข้อมูล
ทั้งเรื่องการกำหนดนโยบายของ index ว่าควรทำงานและใช้งานอย่างไร
ดังนั้นคนใช้งานและดูแล Elasticsearch ควรรู้และเข้าใจ
มาดูกัน

เริ่มแรกด้วย Hot-Warn-Cold architecture ของ ILM

เป็นรูปแบบของการจัดการข้อมูลแบบ time series
เช่น logging, metric ข้อมูลจากพวก sensor ต่าง ๆ
แน่นอนว่า การใช้งานข้อมูลประเภทนี้สามารถแบ่งกลุ่มได้ดังนี้

  • กลุ่มที่ 1 ถูกใช้งานตลอดเวลา เช่นข้อมูลในวันนี้และในสัปดาห์นี้ จะเรียกว่า Hot 
  • กลุ่มที่ 2 อาจจะมีการใช้งานบ้างแต่ไม่บ่อย เช่นในสัปหา์ก่อนหน้านี้หรือภายในเดือนนี้ จะเรียกว่า Warm
  • กลุ่มที่ 3 ข้อมูลที่ไม่ถูกใช้เลยหรือนาน ๆ ครั้ง เช่นข้อมูลของเดือนก่อน 3 เดือนย้อนหลัง จะเรียกว่า Cold
  • กลุ่มที่ 4 คือ Delete !!

แสดงดังรูป

แน่นอนว่า ข้อมูลทั้ง 3 กลุ่มถูกใช้งานต่างกัน
ดังนั้นการเก็บไว้ด้วยกัน มันส่งผลต่อประสิทธิภาพของการทำงานแน่นอน
ยกตัวอย่างเช่น 
เรามีข้อมูลจำนวน 1,000 ล้าน document
แต่ข้อมูลที่เราสนใจมีเพียง 1 ล้าน document
นั่นแสดงว่า เราเสียค่าใช้จ่ายและเวลาเพื่อไปหาข้อมูลเพียง 1 ล้านจาก 1,000 ล้าน
เป็นสิ่งที่สิ้นเปลืองมาก ๆ
ดังนั้นแนวคิดนี้ จึงจะเข้ามาช่วย
ให้เรากำหนดนโยบายของ index ใน Elasticsearch ได้ว่า
จะทำการแยกข้อมูลไปใน index แต่ละประเภทอย่างไรนั่นเอง

ที่สำคัญเครื่องสำหรับจัดการข้อมูลแต่ละประเภทก็ต่างกันด้วย
ทำให้เราสามารถวางแผนในแต่ละ node ได้ง่ายขึ้น เช่น

  • Hot จะใช้เครื่องที่มี CPU, memory และ I/O สูง ๆ
  • Warm, Cold เน้นไปที่ขนาดของ Disk มากกว่า

สามารถกำหนดประเภทของ node ได้ดังนี้

ต่อมาเราสามารถทำการกำหนดนโยบายของ Index ได้

กำหนดนโยบายของ index แต่ละประเภทผ่าน ILM API ได้เลย
แน่นอนว่า เราสามารถกำหนดรูปแบบการ rolling data ได้เลย ตามความต้องการ เช่น

  • ตามขนาดหรืออายุของข้อมูล เพื่อสร้าง index ใหม่ขึ้นมา
  • กำหนดจุดหรือเวลาของ index ที่ไม่ถูกทำการแก้ไขได้
  • ทำการกำหนดจุดหรือเวลาให้ลบ index ไปเลย

มาดูตัวอย่างของการใช้งาน ILM API

สำหรับกำหนด Hot index ให้สร้าง index ใหม่
เมื่อ Index มีขนาดใหญ่กว่า 50GB
และข้อมูลมีอายุไม่เกิน 30 วัน
และจะทำการลบเมื่อข้อมูลไม่ถูกใช้งานเกิน 90 วันขึ้นไป
เขียนคำสั่งได้ดังนี้

สำหรับใครใช้งาน Elasticsearch ใหม่ ๆ 

จะพบว่า ILM เปิดใช้งานอยู่แล้วนะครับ
จะมี index มี suffix แปลก ๆ ออกมาก็ไม่ต้องตกใจ
เพราะว่า นั่นคือค่า default นั่นเอง
ลองเรียนรู้และใช้งานกันดูครับ มีประโยชน์มาก ๆ