ในบทความนี้เราจะขอพาทุกท่านไปรู้จักกับเครื่องมือที่ช่วยในเรื่องของการค้นหาข้อมูล หลังจากที่ผู้สร้าง Elasticsearch จะไม่ไปต่อกับความเป็นโอเพ่นซอร์สหลังเวอร์ชัน 7.10.2 ด้วยเหตุนี้ Amazon จึงเป็นตัวตั้งตัวตีฟอร์มกลุ่มเพื่อสร้างเครื่องมือขึ้นใหม่ที่ชื่อ OpenSearch ซึ่งบทความนี้ทุกท่านจะทราบถึงสถาปัตยกรรมภายในของเครื่องมือนี้ครับ
หากใครอยากทราบการเปลี่ยนผ่านสู่ OpenSearch ติดตามบทความเก่าได้ที่ https://www.techtalkthai.com/amazon-continues-own-elasticsearch-version-as-opensearch-service/

OpenSearch ต่อยอดจาก Elasticsearch 7.10.2 และ Kibana 7.10.2 โดยให้บริการภายใต้ Apache Software License 2.0 หรือกล่าวคือเป็นโอเพ่นซอร์สที่ถูกดูแลโดย Community ซึ่งเริ่มได้รับความสนใจและดาวน์โหลดไปมากกว่า 1.4 ล้านครั้งแล้ว
องค์ประกอบของ OpenSearch มีอยู่ 3 ส่วนคือ
1.) ส่วนสำหรับเก็บข้อมูลเรียกว่า Data Store
2.) ส่วนกลไกของการค้นหาหรือ OpenSearch
3.) ส่วนแสดงผลแบบ Dashboard
สถาปัตยกรรมและแนวคิดของ OpenSearch

แนวคิดของ OpenSearch ถูกออกแบบมาสำหรับกระจายการทำงาน (Distributed) ซึ่งอยู่บนพื้นฐานของ Apache Lucene หมายความว่าผู้ใช้งานและแอปพลิเคชันจะปฏิสัมพันธ์กันแบบคลัสเตอร์ตามรูปประกอบด้านบน
แต่ละคลัสเตอร์อาจจะมีมากกว่า 1 โหนดรันอยู่บนเซิร์ฟเวอร์ใดๆเพื่อเก็บและประมวลผลการค้นหา โหนดภายในคลัสเตอร์มี 3 ชนิดคือ
1.) Cluster Manager – บริหารจัดการคลัสเตอร์เช่น การสร้างและลบ index, ติดตามการเข้าออกของโหนด, ติดตามสุขภาพของแต่ละโหนดในคลัสเตอร์ และอื่นๆ
2.) Data node – เก็บและค้นหาข้อมูล ทำงานทุกอย่างที่เกี่ยวข้องกับข้อมูลเช่น indexing, searching และ aggregating กล่าวคือเป็นมดงานของคลัสเตอร์ที่กินทรัพยากรเรื่องพื้นที่มากกว่าโหนดอื่น
3.) Coordinating node – นำส่ง Request จากผู้ร้องขอไปยัง Data node รวมถึงรวบรวมผลลัพธ์กลับมายังผู้ร้องขอด้วย ซึ่ง Coordinating node คอยจัดการ Request ภายนอกอย่าง Dashboard หรือไลบรารีผู้ใช้งาน
แนวทางการนำไปใช้

OpenSearch ถูกออกแบบมาให้ทำงานได้แบบกระจายแต่กินประสิทธิภาพต่ำขนาดว่าลงในเครื่องเดียวยังไหว จะงานใหญ่ก็สามารถรองรับได้เพียงแค่เติมโหนดใหม่เข้ามาช่วยกันหรือสร้าง replica shard เข้ามาเพิ่มประสิทธิภาพการทำงานได้ อย่างไรก็ดีศักยภาพที่เหมาะสมของ OpenSearch ก็คือการนำไปใช้เพื่อวิเคราะห์ข้อมูลเช่น การทำ Log Analytics เพื่อดูแนวโน้มและหาความผิดปกติที่ดูได้ยาก และกรณีอื่นอีกมาก โดย OpenSearch สามารถทำการค้นหาแบบ Full-text ในหลายรูปแบบ รวมถึงจัดอันดับตามคะแนน เรียบเรียงผลลัพธ์ตาม Field และรวบรวมผลลัพธ์เข้าด้วยกันได้
การใช้งานเริ่มต้นต้องเพิ่ม Data Source เข้าไปยัง OpenSearch Cluster ซึ่งรองรับทั้ง Log File, JSON, Metric และอื่นๆ ซึ่งผู้ใช้งานสามารถจัดการกับคลัสเตอร์ได้ผ่าน REST API หรือนักพัฒนาอาจใช้ Query DSL, OpenSearch SQL และ Piped Processing Language เพื่อการ Query ข้อมูลได้อีกด้วย ไม่เพียงเท่านั้นยังสามารถใช้ Plugin เพื่อเพิ่มความสามารถได้ในด้านประสิทธิภาพการค้นหา เพิ่มความมั่นคงปลอดภัย หรือเสริมความสามารถด้วย Machine Learning เป็นต้น
ผู้สนใจศึกษาข้อมูลได้ที่ https://github.com/opensearch-project หรือ https://opensearch.org/