Elasticsearch - แนวคิดพื้นฐาน
Elasticsearch เป็นเซิร์ฟเวอร์การค้นหาที่ใช้ Apache Lucene ได้รับการพัฒนาโดย Shay Banon และเผยแพร่ในปี 2010 ปัจจุบันได้รับการดูแลโดย Elasticsearch BV เวอร์ชันล่าสุดคือ 7.0.0
Elasticsearch เป็นเครื่องมือค้นหาและวิเคราะห์ข้อมูลแบบเต็มรูปแบบแบบกระจายและแบบโอเพนซอร์สแบบเรียลไทม์ สามารถเข้าถึงได้จากอินเทอร์เฟซบริการเว็บ RESTful และใช้เอกสาร schema less JSON (JavaScript Object Notation) เพื่อจัดเก็บข้อมูล มันถูกสร้างขึ้นจากภาษาโปรแกรม Java และด้วยเหตุนี้ Elasticsearch จึงสามารถทำงานบนแพลตฟอร์มที่แตกต่างกัน ช่วยให้ผู้ใช้สามารถสำรวจข้อมูลจำนวนมากด้วยความเร็วสูงมาก
คุณสมบัติทั่วไป
คุณสมบัติทั่วไปของ Elasticsearch มีดังนี้ -
Elasticsearch สามารถปรับขนาดได้ถึงเพตะไบต์ของข้อมูลที่มีโครงสร้างและไม่มีโครงสร้าง
Elasticsearch สามารถใช้แทนที่เก็บเอกสารเช่น MongoDB และ RavenDB
Elasticsearch ใช้ denormalization เพื่อปรับปรุงประสิทธิภาพการค้นหา
Elasticsearch เป็นหนึ่งในเครื่องมือค้นหาระดับองค์กรที่ได้รับความนิยมและปัจจุบันองค์กรใหญ่ ๆ หลายแห่งใช้งานเช่น Wikipedia, The Guardian, StackOverflow, GitHub เป็นต้น
Elasticsearch เป็นโอเพ่นซอร์สและพร้อมใช้งานภายใต้ลิขสิทธิ์ Apache เวอร์ชัน 2.0
แนวคิดหลัก
แนวคิดหลักของ Elasticsearch มีดังนี้ -
โหนด
มันหมายถึงอินสแตนซ์เดียวที่ทำงานอยู่ของ Elasticsearch เซิร์ฟเวอร์จริงและเซิร์ฟเวอร์เสมือนเดียวรองรับหลายโหนดขึ้นอยู่กับความสามารถของทรัพยากรทางกายภาพเช่น RAM หน่วยเก็บข้อมูลและพลังการประมวลผล
คลัสเตอร์
เป็นชุดของโหนดตั้งแต่หนึ่งโหนดขึ้นไป คลัสเตอร์จัดทำดัชนีโดยรวมและความสามารถในการค้นหาในทุกโหนดสำหรับข้อมูลทั้งหมด
ดัชนี
เป็นชุดเอกสารประเภทต่างๆและคุณสมบัติ ดัชนียังใช้แนวคิดของเศษเพื่อปรับปรุงประสิทธิภาพ ตัวอย่างเช่นชุดเอกสารประกอบด้วยข้อมูลของแอปพลิเคชันเครือข่ายสังคม
เอกสาร
เป็นชุดของเขตข้อมูลในลักษณะเฉพาะที่กำหนดในรูปแบบ JSON เอกสารทุกชิ้นเป็นของประเภทหนึ่งและอยู่ในดัชนี เอกสารทุกฉบับเชื่อมโยงกับตัวระบุเฉพาะที่เรียกว่า UID
ชาร์ด
ดัชนีแบ่งย่อยตามแนวนอนเป็นเศษเล็กเศษน้อย ซึ่งหมายความว่าแต่ละชาร์ดมีคุณสมบัติทั้งหมดของเอกสาร แต่มีอ็อบเจ็กต์ JSON จำนวนน้อยกว่าดัชนี การแยกในแนวนอนทำให้ชาร์ดเป็นโหนดอิสระซึ่งสามารถเก็บไว้ในโหนดใดก็ได้ Primary Shard คือส่วนแนวนอนดั้งเดิมของดัชนีจากนั้นเศษหลักเหล่านี้จะถูกจำลองเป็นเศษแบบจำลอง
แบบจำลอง
Elasticsearch อนุญาตให้ผู้ใช้สร้างแบบจำลองของดัชนีและเศษของพวกเขา การจำลองแบบไม่เพียง แต่ช่วยเพิ่มความพร้อมใช้งานของข้อมูลในกรณีที่เกิดความล้มเหลว แต่ยังช่วยเพิ่มประสิทธิภาพการค้นหาด้วยการดำเนินการค้นหาแบบขนานในแบบจำลองเหล่านี้
ข้อดี
Elasticsearch ได้รับการพัฒนาบน Java ซึ่งทำให้เข้ากันได้กับเกือบทุกแพลตฟอร์ม
Elasticsearch เป็นแบบเรียลไทม์หรืออีกนัยหนึ่งหลังจากผ่านไปหนึ่งวินาทีเอกสารที่เพิ่มจะสามารถค้นหาได้ในเอ็นจิ้นนี้
มีการแจกจ่าย Elasticsearch ซึ่งทำให้ง่ายต่อการปรับขนาดและรวมเข้ากับองค์กรขนาดใหญ่
การสร้างการสำรองข้อมูลทั้งหมดทำได้ง่ายโดยใช้แนวคิดของเกตเวย์ซึ่งมีอยู่ใน Elasticsearch
การจัดการหลายผู้เช่าทำได้ง่ายมากใน Elasticsearch เมื่อเทียบกับ Apache Solr
Elasticsearch ใช้ออบเจ็กต์ JSON เป็นคำตอบซึ่งทำให้สามารถเรียกใช้เซิร์ฟเวอร์ Elasticsearch ด้วยภาษาโปรแกรมต่างๆจำนวนมาก
Elasticsearch รองรับเอกสารเกือบทุกประเภทยกเว้นประเภทที่ไม่รองรับการแสดงข้อความ
ข้อเสีย
Elasticsearch ไม่มีการสนับสนุนหลายภาษาในแง่ของการจัดการคำขอและข้อมูลการตอบกลับ (ทำได้เฉพาะใน JSON) ซึ่งแตกต่างจาก Apache Solr ซึ่งเป็นไปได้ในรูปแบบ CSV, XML และ JSON
ในบางครั้ง Elasticsearch มีปัญหาเกี่ยวกับสถานการณ์สมองแตก
การเปรียบเทียบระหว่าง Elasticsearch และ RDBMS
ใน Elasticsearch ดัชนีจะคล้ายกับตารางใน RDBMS (Relation Database Management System) ทุกตารางคือคอลเลกชันของแถวเช่นเดียวกับทุกดัชนีคือชุดเอกสารใน Elasticsearch
ตารางต่อไปนี้แสดงการเปรียบเทียบโดยตรงระหว่างคำศัพท์เหล่านี้
ยางยืด | RDBMS |
---|---|
คลัสเตอร์ | ฐานข้อมูล |
ชาร์ด | ชาร์ด |
ดัชนี | ตาราง |
ฟิลด์ | คอลัมน์ |
เอกสาร | แถว |