และแล้ว Elastic Stack 7.0 ตัวเต็มก็ถูกปล่อยออกมา
หลังจากที่ปล่อยให้ทดลองใช้งานมาสักพัก
ซึ่งมี pull request มากกว่า 10,000 เรื่อง จาก 861 คนที่ร่วมกัน contribute

โดยสิ่งที่เปลี่ยนแปลงเยอะ ๆ และเห็นได้ชัดคือ Elasticsearch นั่นเอง
ตัวรองมาคือ Kibana ที่สามารถเปลี่ยนเป็น Dark Mode ได้ด้วย (ใช้ได้ตั้งแต่ 6.7)
รวมทั้งการปรับปรุงเรื่องการแสดงข้อมูลแผนที่ด้วย
Elastic Map Service ใน Kibana นั่นเอง

Kibana แบบ Dark mode

มาดูการเปลี่ยนแปลงและปรับปรุงของ Elasticasearch 7.0 กัน

เริ่มต้นด้วยข้อมูลพื้นฐาน
ยกตัวอย่างเช่น node name ก็เปลี่ยนเป็นชื่อเครื่องหรือ node นั้น ๆ ไปแล้ว
อีกอย่างที่ขาดไม่ได้คือไปใช้ Apache Lucene 8.0.0 แล้ว

สิ่งที่เปลี่ยนไปมากคือ การจัดการ Cluster นั่นเอง

ในเรื่องของการ scale และทนทานต่อความผิดพลาด 
เป็นความสามารถและเป้าหมายหลัก ๆ ของ Elasticsearch
ซึ่งพยายามแก้ไขและปรับปรุงให้ดีขึ้นมาตลอด
ตั้งแต่ Zen ที่ใช้ multicast จนเปลี่ยนมาให้ใช้ unicast
จนมาถึง Elasticsearch 7.0 ก็ได้เปลี่ยนมาใช้ Zen2
ซึ่งอธิบายไว้ในเอกสารว่า
เร็วกว่าเดิม ปลอดภัยกว่าเดิมและใช้ง่ายกว่าเดิม

สิ่งที่น่าสนใจมากกว่านั้นคือ 

ถ้ามีการส่ง request มายัง node หนึ่ง ๆ มาก ๆ
หรือใหญ่เกินไปที่ node นั้นจะรับไหวแล้ว
Node นั้นจะแจ้งกลับไปยังผู้เรียกทันที
เพื่อให้ผู้ใช้งานทราบและจัดการต่อไป
ยกตัวอย่างเช่น ทำการ retry หรือไปเรียก node อื่นแทน เป็นต้น
หรือนั่นคือมีการจัดการด้วย Circuit Breaker นั่นเอง

เพื่อไม่ทำให้ node นั่นตาย หรือใช้ resource เกินที่กำหนด
เนื่องจากถ้า node ใน cluster มีปัญหา เช่น Out Of Memory (OOM)
จะเกิดการทำงานที่มากมายและอาจจะทำให้ cluster ล่มก็เป็นได้
ดังนั้นการตัดปัญหาตั้งแต่แรกจึงเป้นแนวทางที่ดีกว่านั่นเอง

การปรับปรุงการค้นหาก็ทำให้การทำงานดีขึ้น

ยกตัวอย่างเช่น การดึงข้อมูลแบบ Top Hit
ซึ่งช่วยลดการค้นหาทั้งหมดใน index ต่าง ๆ ลงไป
เพราะว่าจะดึงข้อมูลในจำนวนที่ต้องการหรือน้อย ๆ
ยกตัวอย่างเช่นการค้นหาสินค้าในระบบ e-commerce
ผู้ใช้งานส่วนใหญ่มักจะดูผลการค้นหาเพียงหน้าแรก 10-20 อันดับเท่านั้น
การดึงข้อมูล product ทั้งหมดที่เจอเป็นเรื่องที่สิ้นเปลืองน่าดู
ดังนั้นใน Elasticsearch 7.0 ซึ่งใช้งาน Apache Lucene 8.0.0
จะมีความสามารถเรื่องนี้คือ Block-Max WAND 
ทำให้ดึงข้อมูลแบบ Top Hit ได้รวดเร็วมากยิ่งขึ้น

มี Interval query ที่เพิ่มเข้ามาใหม่ แต่ยังไม่เคยใช้เลย
ไว้ต้องลองไปศึกษาดูบ้างว่าคืออะไร ?

รวมถึงเรื่องของ Function Score 2.0
ช่วยจัดการเรื่องของการ custom score หรือ ranking ของผลการค้นหา
ให้เป้นไปตามที่ business ต้องการ
ใน Elasticsearch 7.0 ได้ปรับปรุงให้ใช้งานง่ายขึ้นและรวดเร็วอีกด้วย

เกือบลืมไปว่า ข้อมูลของเวลาใน Elasticsearch 7.0 นั้น
สามารถ Timestamp เก็บในหน่วย nanosecond ได้แล้ว
เพื่อตอบโจทย์ต่อการอัตราการสร้างข้อมูลที่รวดเร็วขึ้นนั่นเอง
เช่นมาจากอุปกรณ์ IoT หรือจากอุปกรณ์ network ต่าง ๆ

โดย Elasticsearch ได้เปลี่ยน library การจัดการเวลา
จาก JODA time มาใช้ Java Time ใน JDK 8 แล้ว

ลองไป Download มาใช้งานกันได้แล้วที่ Elastic Stack 7.0

ส่วนใครที่รอการ migrate อยู่ก็เตรียมได้แล้วนะครับ