Elasticsearch: การปรับปรุงประสิทธิภาพการค้นหา

Mar 11 2023
บทนำ Travolic เป็นเครื่องมือค้นหาเมตาที่รวบรวมราคาเที่ยวบินจากสายการบินและตัวแทนท่องเที่ยวหลายแห่ง ทำให้ผู้ใช้มีแพลตฟอร์มที่สะดวกและเชื่อถือได้ในการเปรียบเทียบและจองการเตรียมการเดินทาง อย่างไรก็ตาม เนื่องจากจำนวนผู้ใช้และปริมาณข้อมูลที่จัดเก็บไว้ในระบบเพิ่มขึ้นอย่างต่อเนื่อง เราจึงเผชิญกับความท้าทายในการเพิ่มประสิทธิภาพการค้นหา ในขณะเดียวกันก็รับประกันว่าความถูกต้องของข้อมูลยังคงมีความสำคัญสูงสุด
โลโก้ของ ElasticSearch

การแนะนำ

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

สถานที่ค้นหาของ Travolic

พื้นหลัง

ที่Travolicข้อมูลสถานที่มีบทบาทสำคัญในเครื่องมือค้นหาโดยช่วยให้ผู้ใช้สามารถค้นหาสนามบินที่ใกล้ที่สุดและรายละเอียดการเดินทางที่เกี่ยวข้อง แม้ว่า MongoDB จะทำงานได้อย่างน่าพอใจ แต่Travolicก็กำลังสำรวจลู่ทางเพื่อเพิ่มประสิทธิภาพการค้นหา โดยเฉพาะอย่างยิ่งในแง่ของเวลาตอบสนอง

ทีมงานของTravolic ยอมรับว่า Elasticsearchเป็นโซลูชันที่มีแนวโน้ม เนื่องจากความเร็วและความสามารถทางภาษาที่ยอดเยี่ยม Elasticsearch เป็นเสิร์ชเอ็นจิ้นโอเพ่นซอร์สที่สร้างขึ้นบนไลบรารีการค้นหา Apache Lucene แพลตฟอร์มนี้สร้างขึ้นโดยเฉพาะเพื่อจัดการกับข้อมูลจำนวนมหาศาล ซึ่งเป็นสิ่งที่Travolicต้องการอย่างแท้จริงสำหรับความต้องการด้านข้อมูลที่ขยายตัวอย่างต่อเนื่อง นอกจากนี้ Elasticsearch ยังให้การสนับสนุนภาษาที่หลากหลาย ซึ่งจำเป็นสำหรับแพลตฟอร์มเครื่องมือค้นหาเมตาที่ให้บริการผู้ชมทั่วโลก

กระบวนการโยกย้าย

กระบวนการย้ายเกี่ยวข้องกับการย้ายข้อมูลสถานที่จาก MongoDB ไปยัง Elasticsearch ทีมงานทำงานอย่างใกล้ชิดกับผู้เชี่ยวชาญของ Elasticsearch เพื่อให้แน่ใจว่าการย้ายข้อมูลดำเนินไปอย่างราบรื่นและไม่มีการหยุดชะงักใดๆ ต่อการทำงานของแพลตฟอร์ม

ในการเริ่มต้นกระบวนการย้ายข้อมูล ทีมงานได้ออกแบบสคีมาของ Elasticsearch ที่สอดคล้องกับสคีมา MongoDB ปัจจุบันโดยการแมปฟิลด์จากคอลเลกชัน MongoDB กับฟิลด์ที่เกี่ยวข้องใน Elasticsearch ตามคำจำกัดความของสคีมา ทีมงานใช้ประโยชน์จาก API จำนวนมากของ Elasticsearch เพื่อถ่ายโอนข้อมูลไปยัง Elasticsearch

ขณะย้ายข้อมูลสถานที่จาก MongoDB ไปยัง Elasticsearch ทีมงานประสบปัญหาความถูกต้องของข้อมูลบางประการ โดยเฉพาะอย่างยิ่ง ข้อมูลบางส่วนในคอลเลกชัน MongoDB ไม่ได้รับการทำให้เป็นมาตรฐานอย่างถูกต้อง ซึ่งส่งผลให้เกิดความไม่สอดคล้องกันเมื่อโหลดลงใน Elasticsearch ดังนั้น ทีมงานจึงต้องล้างข้อมูลด้วยตนเองและตรวจสอบให้แน่ใจว่าข้อมูลได้รับการทำให้เป็นมาตรฐานอย่างถูกต้องก่อนที่จะโหลดลงใน Elasticsearch

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

ผลกระทบต่อประสิทธิภาพ

ประสิทธิภาพการค้นหาของTravolic ได้รับผลกระทบอย่างมากจากการโยกย้ายไปยัง Elasticsearch ก่อนการย้ายข้อมูล ข้อความค้นหามีเวลาตอบสนองเฉลี่ยประมาณ 2–5 วินาที อย่างไรก็ตาม หลังจากการย้ายข้อมูล เวลาตอบสนองเฉลี่ยดีขึ้นระหว่าง 50-80 มิลลิวินาที

เครือข่ายคำขอสถานที่ค้นหา

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

อีกปัจจัยหนึ่งที่ทำให้ประสิทธิภาพการทำงานดีขึ้นคือการสนับสนุนภาษาที่นำเสนอโดย Elasticsearch Elasticsearch มีการสนับสนุนในตัวสำหรับหลายภาษา รวมถึงอังกฤษ สเปน ฝรั่งเศส และเยอรมัน นี่เป็นสิ่งสำคัญอย่างยิ่งสำหรับแพลตฟอร์มอย่างTravolicซึ่งให้บริการลูกค้าจากทั่วโลกและจำเป็นต้องรองรับภาษาต่างๆ

หลังการย้าย

เมื่อการย้ายจาก MongoDB ไปยัง Elasticsearch เสร็จสิ้น ความท้าทายใหม่ก็เกิดขึ้นสำหรับทีมที่Travolic นั่นคือ ทำอย่างไรจึงจะซิงค์ข้อมูลระหว่าง MongoDB และ Elasticsearch โดยเฉพาะอย่างยิ่ง พวกเขาจำเป็นต้องตรวจสอบให้แน่ใจว่าการอัปเดตหรือการลบที่ทำกับเอกสารในคอลเลกชันของสนามบินและเมืองใน MongoDB ยังสะท้อนให้เห็นในเอกสารที่เกี่ยวข้องในดัชนีสถานที่ใน Elasticsearch

เพื่อแก้ไขปัญหานี้ ทีมงานจึงตัดสินใจใช้ระบบคิวข้อความ โดยเฉพาะ RabbitMQ เพื่อจัดการกระบวนการซิงโครไนซ์ระหว่าง MongoDB และ Elasticsearch

พวกเขาสร้างบริการที่จะเผยแพร่เหตุการณ์ด้วยการอัปเดตหรือลบที่เกิดขึ้นใน MongoDB บริการอื่นถูกสร้างขึ้นเพื่อใช้เหตุการณ์เหล่านี้และใช้การเปลี่ยนแปลงกับเอกสารที่เกี่ยวข้องในดัชนีสถานที่ใน Elasticsearch

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

บทสรุป

การย้ายข้อมูล ของ Travolicจาก MongoDB ไปยัง Elasticsearch นั้นประสบความสำเร็จอย่างมาก กระบวนการย้ายข้อมูลดำเนินไปอย่างราบรื่น และปรับปรุงประสิทธิภาพของแพลตฟอร์มอย่างเห็นได้ชัด โดยลดเวลาตอบสนองโดยเฉลี่ยสำหรับข้อความค้นหาจาก 2–5 วินาทีเหลือระหว่าง 50-80 มิลลิวินาที การย้ายไปยัง Elasticsearch ยังทำให้Travolicเตรียมพร้อมสำหรับการเติบโตและการขยายตัวในอนาคต เนื่องจากความสามารถของ Elasticsearch ทำให้เป็นโซลูชันที่ปรับขนาดได้เพื่อรองรับความต้องการข้อมูลที่เพิ่มขึ้นของแพลตฟอร์ม