ארכיטקטורת שאילתות ואינדקסציה של Elasticsearch

מה זה Elasticsearch?

Elasticsearch הוא מנוע חיפוש וניתוח מפוזר וקוד פתוח, שנבנה על גבי ספריית Apache Lucene. Elasticsearch מציע גם חיפוש וקטורי ויצירת תוכן מוגברת על ידי חיפוש (RAG), תומך באפליקציות AI מודרניות בצורה חלקה. אפליקציות יכולות לאחסן נתונים מובנים ולא מובנים ב-Elasticsearch, עם או בלי סכימה מוגדרת, על ידי שליחת נתוני JSON לקלאסטר של Elasticsearch.

אדריכלות Elasticsearch

מהבסיס, הרכיבים העיקריים של קלאסטר Elasticsearch הם:

מסמך

מסמך הוא הרשומה הקטנה ביותר של מידע המאוחסנת על ידי Elasticsearch ומיוצגת כ-JSON. מסמך מורכב ממספר שדות (זוגות מפתח-ערך) מסוגים שונים ויכול להיות בעל סכימה מוגדרת מראש או להיות חסר סכימה, תוך הסקת סוגי הנתונים של כל שדות חדשים שמאונדקסים.

אינדקס

אינדקס הוא אוסף לוגי של מסמכים עם אותה סכימה, המזוהה על ידי שם אינדקס.

ש shard

אינדקסים של Elasticsearch מחולקים ליחידות ניהוליות הנקראות shards, שהן אוסף של מסמכים. Shards הם היחידה הבסיסית של חיפוש ומועתקות בין מספר צמתים לצורך גיבוי וסובלנות לתקלות.

צומת

צומת הוא מופע עצמאי של Elasticsearch ומנהל אוסף של שארדים השייכים לאחד או יותר אינדקסים. לצמתים עשויות להיות תפקידים שונים כמו צומת נתונים, צומת מאסטר וצומת קליטה.

אשכול

אשכול Elasticsearch הוא אוסף של צמתים מחוברים. כל הצמתים באשכול יכולים לטפל בבקשות מלקוחות ולתקשר זה עם זה. כל צומת באשכול מחזיק תת-קבוצה של השארדים השייכים לאינדקס.

ארכיטקטורת שאילתה

דיאגרמת הארכיטקטורה הבאה מתארת את זרימת הבקשה לחיפוש:

  1. המשתמש או היישום מבצע שאילתת חיפוש. השאילתה יכולה להיות מטופלת על ידי כל צומת באשכול. הצומת שמטפל בבקשה הוא הצומת "המנחה".
  2. הצומת המנחה משדר את השאילתה לכל השארדים המעורבים ולשכפולים שלהם.
  3. כל שארד מבצע את השאילתה באופן מקומי ומחזיר סט תוצאות קל לצומת המנחה.
  4. הצומת המנחה מאחד את התוצאות שהוא מקבל. זהו סוף שלב ה"שאילתה". שלב השאילתה מזהה את המסמכים הבסיסיים שמייצרים את תוצאות החיפוש, אך המסמך המלא עדיין צריך להיות משוחזר.
  5. הצומת המנחה שולח בקשות fetch לשארדים המוחזקים, שמעשירים את המסמכים בסט התוצאות.
  6. המסמכים המועשרים מוחזרים לצומת המנחה.
  7. הסט המלא של תוצאות החיפוש, מדורג ומועשר, מוחזר למתקשר.

אדריכלות אינדוקס

הדיאגרמה האדריכלית הבאה מתארת את זרימת בקשת האינדוקס:

  1. המשתמש שולח מסמך JSON לאינדוקס ב-Elasticsearch. אם המסמך כבר קיים, מתווספים שדות חדשים, והשדות הקיימים מעודכנים. הצומת שמקבלת לראשונה את הבקשה היא הצומת "המנחה".
  2. הצומת המנחה מזהה את השארד הראשי של המסמך הנכנס, בדרך כלל בהתבסס על מזהה המסמך, ומעבירה את הבקשה לצומת הנתונים שמחזיקה בשארד הראשי.
  3. השארד הראשי מאמת את הפעולה ומבצע אותה באופן מקומי.
  4. לאחר מכן, השארד הראשי מעביר את הפעולה לכל השכפולים שלו במקביל.
  5. שכפולי השארדים מבצעים את הפעולה באופן מקומי על הצמתים שלהם.
  6. שלבים 6, 7 ו-8 מראים את ההכרה בכתיבה שעולה משכפל השארד אל השארד הראשי, אל הצומת המנחה, ואל הקורא.

סיכום

מאמר זה מתאר את המרכיבים השונים של אשכול Elasticsearch: מסמכים, אינדקסים, שארדים וצמתים. הוא גם מתאר את מחזור חיי בקשת חיפוש ובקשת אינדוקס. האדריכלות הגמישה שלו מקלה על הוספת והסרת צמתים ככל שהאשכול מתרחב. בשילוב עם תכונות כמו אינדוקס ללא סכימה ותמיכה בתכונות חיפוש מבוססות AI, זה הופך את Elasticsearch לסטנדרט דה פקטו עבור ארגונים הזקוקים לאחסן, לחפש ולנתח כמויות גדולות של נתונים בזמן אמת ביעילות.

Source:
https://dzone.com/articles/elasticsearch-query-and-indexing-architecture