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
คลัสเตอร์ ฐานข้อมูล
ชาร์ด ชาร์ด
ดัชนี ตาราง
ฟิลด์ คอลัมน์
เอกสาร แถว