Elasticsearch คืออะไร

elasticsearch หลายคนคงคุ้นชื่ออยู่แล้ว หลังจากได้ใช้ elasticsearch มาพักใหญ่ ได้สรุปการใช้งานมาฝากกัน


Elasticsearch คือเครื่องมือที่ใช้สร้างโปรแกรมการค้นหา (Search Engine) สำหรับค้นหาข้อมูลต่างๆ ในฐานข้อมูล เช่น ข้อมูลสินค้าที่มีในสต็อก ไปจนถึง log ของระบบที่เกิดขึ้นในแต่ละวัน นอกจากนี้ ยังสามารถใช้สร้างฐานข้อมูลที่ค้นหาทุกสิ่งที่ต้องการได้สะดวกรวดเร็วและประหยัดเวลาในการจัดการไฟล์


ย้อนกลับไปในปี 2010 Elasticsearch ถูกพัฒนาต่อยอดจาก Apache Lucene ซอฟต์แวร์โอเพ่นซอร์ส และได้มีการนำมาพัฒนาต่อบน Java จนทำให้มันกลายเป็นฐานข้อมูล NoSQL (ไม่ใช่เชิงสัมพันธ์) ซึ่งปัจจุบันมีการใช้อย่างแพร่หลาย ตั้งแต่นำมาใช้สร้างแอปพลิเคชันรวมไปถึงการจัดทำฐานข้อมูล และฐานข้อมูล NoSQL มีจุดเด่นดังนี้

  • ยืดหยุ่นสูง – ฐานข้อมูล NoSQL ช่วยให้ Developer จัดการกับข้อมูลแบบไม่มีโครงสร้าง (unstructured data) เช่น ประมวลผล Log, XML, JSON และเอกสารต่างๆ ได้ง่าย ทำให้การทำงานมีความความยืดหยุ่นเมื่อต้องใช้จัดการงานที่มีความเฉพาะทางสูง
  • รองรับการปรับขนาดและการเชื่อมต่อ – ฐานข้อมูล NoSQL สามารถปรับขนาดให้ใหญ่ขึ้นโดยไม่จำเป็นต้องเพิ่มจำนวนเซิร์ฟเวอร์ และยังทำงานเชื่อมโยงกับ data center ที่อื่นๆ ได้พร้อมกัน นั่นทำให้ผู้ให้บริการคลาวด์หันมาใช้ฐานข้อมูลชนิดนี้กันอย่างแพร่หลาย 


Elasticsearch ทำงานยังไง แล้วเกี่ยวข้องอะไรกับ database index?

ที่เราได้บอกไปตอนแรกว่า Elasticsearch ก็คือเครื่องมือค้นหาข้อมูลในฐานข้อมูลชนิดหนึ่ง ซึ่งมีองค์ประกอบหลักอยู่ 3 ส่วน ได้แก่ ระบบดัชนีค้นหา (database index), ระบบคะแนนผลลัพธ์ (relevancy) และระบบแสดงข้อมูล (dashboard) โดยทุกส่วนจะทำงานร่วมกันตลอดเวลา


คลิปด้านล่างอธิบายไว้ดีมาก..

1. Database index (ระบบดัชนีค้นหา)

Database index เป็นการนำเอาข้อมูลดิบทั้งหมดที่มีมาใส่ไว้ในฐานข้อมูลกลาง ไม่ว่าจะเป็นชื่อหนังสือ ผู้แต่ง ประเภท สารบัญ และเนื้อหาทุกตัวอักษร จากนั้น Elasticsearch จะจัดการทำ inverted index หรือการนำคำทั้งหมดที่อยู่ภายในหนังสือมาจัดเรียงไปจนถึงทำสำเนาให้มีลักษณะคล้ายกับสารบัญ ซึ่งช่วยให้ผู้ใช้หรือตัวคุณเองสามารถค้นหาคำต่างๆ ในฐานข้อมูลว่ามีปรากฏอยู่ในหนังสือเล่มใดบ้าง

2. Relevancy (ระบบคะแนนผลลัพธ์)

Relevancy เป็นการทำให้ระบบค้นหารู้ว่าควรจะแสดงผลลัพธ์อะไรให้ตรงกับสิ่งที่ผู้ใช้ต้องการมากที่สุด โดย Elasticsearch ใช้วิธีประเมินผลลัพธ์การค้นหาที่เรียกว่า TF-IDF (Term Frequency-Inverse Document Frequency) อันมีปัจจัยหลัก 3 ข้อที่ระบบจะนำมาพิจารณา

  • Term frequency ยิ่งข้อความที่ต้องการค้นหามีอยู่ในเอกสารนั้นมากเท่าไร เอกสารดังกล่าวก็ยิ่งมีความเกี่ยวข้องมากขึ้นเท่านั้น
  • Inverse document frequency ยิ่งมีเอกสารในช่องที่มีข้อความที่ต้องการค้นหามากเท่าไร คำดังกล่าวก็ยิ่งมีความสำคัญน้อยลงเท่านั้น
  • Field length ยิ่งเอกสารมีข้อความที่ต้องการค้นหาในช่องที่สั้นมาก (มีคำไม่กี่คำ) ก็มักจะมีความเกี่ยวข้องมากกว่าเอกสารที่มีข้อความที่ต้องการค้นหาในช่องที่ยาวมาก (มีหลายคำ)


3. Dashboard (ระบบแสดงผล)

ใน Elasticsearch จะมีหน้าแสดงข้อมูลที่เรียกว่า Kibana ซึ่งช่วยให้คุณเห็นข้อมูลต่างๆ ในรูปแบบแผนภูมิ แผนที่ และฟิลเตอร์ ที่ผสมผสานกันจนออกมาเป็นข้อมูลภาพรวมได้อย่างรวดเร็ว และยังช่วยให้การจัดการและตัดสินใจทำอะไรกับข้อมูลเหล่านั้นมีความสะดวกมากยิ่งขึ้น

4. จุดเด่นของ Elasticsearch

เหตุผลที่ทำให้ Elasticsearch ถูกนักพัฒนานำมาใช้อย่างแพร่หลายมาจากจุดเด่น 4 ข้อ เพื่อไม่ให้เสียเวลาเราจะสรุปให้คุณได้เข้าใจ

  • ค้นหาข้อมูลได้เร็ว ช่วยลดระยะเวลาการค้นหาข้อมูลจากเดิมที่มีค่าเฉลี่ย 888 มิลลิวินาที ลดเหลือเฉลี่ยเพียง 66 มิลลิวินาทีเท่านั้น
  • ให้คะแนนผลการค้นหา ยิ่งผลการค้นหาตรงกับ keyword มากเท่าไร ระบบก็ยิ่งให้คะแนนผลการค้นหาสูงขึ้นเพื่อช่วยให้ผู้ใช้พบผลลัพธ์ที่ต้องการมากที่สุด
  • เข้าใจว่าต้องการหาอะไร เพียงระบุคำที่ต้องการค้นหาลงไป ระบบก็จะค้นหาคำจากกลุ่มคำในฐานข้อมูล และนำมาแสดงให้เห็นโดยไม่จำเป็นต้องพิมพ์คำค้นหาให้ถูกต้องเสมอไป
  • จัดกลุ่มคำอัตโนมัติ บอกลาการทำ brand id สำหรับข้อมูลเพื่อระบุว่าสิ่งๆ นั้นคืออะไร เพราะ Elasticsearch สามารถจัดกลุ่มคำให้แบบอัตโนมัติ


อ้างอิงจาก https://www.elastic.co/guide/index.html

0
72