משך: 2 שעות אקדמיות (90 דקות).

מטרת השיעור: הסטודנטים יבינו למה חיפוש טקסט חכם דורש מנוע ייעודי, ויכירו Document/Index/Mapping.

בסוף השיעור הסטודנטים צריכים: להסביר את מגבלות LIKE ב-SQL לחיפוש טקסט, ליצור Index עם Mapping בסיסי, ולהבדיל Elasticsearch מ-MongoDB במטרה (לא רק במבנה נתונים).

דגש קריטי: הבהירו מפורשות ש-Elasticsearch משלים DB קיים, לא מחליף אותו — מניעת בלבול מושגי מרכזי.


מהלך השיעור

חלק בשיעורמשךהערות ודגשים
פתיחה וחיבור5 דקותהראו LIKE ‘%נעל%’ שמפספס “נעליים”
הבעיה: LIKE מוגבל15 דקותהתאמת תווים מדויקת, לא משמעות
הרעיון: Document/Index20 דקותדמיון ל-MongoDB, מטרה שונה
הרעיון: Mapping25 דקותtext מול keyword (רמז לשיעור הבא)
הדגמה חיה: יצירת Index20 דקותPUT mapping, הוספת documents
תרגול מודרך5 דקותתרגיל 1

דגשים להעברת השיעור

  • ההשוואה ל-MongoDB (Document/Index דומים במבנה) עוזרת, אך ודאו שסטודנטים לא מסיקים “זה עוד NoSQL DB” — הדגישו את ההבדל התכליתי (חיפוש מול אחסון) שוב ושוב.
  • אל תעמיקו עדיין ב-text מול keyword — רק ציינו שהם קיימים ושההבדל יוסבר בשיעור הבא, כדי לא להעמיס את השיעור הראשון.
  • הדגמה חיה של יצירת Index והוספת Documents (לא רק JSON על שקופית) חשובה — סטודנטים צריכים לראות בעיניים בקשות ל-Elasticsearch בפועל (Kibana Dev Tools או curl).

מושגים

Information Retrieval — מציאת מידע רלוונטי, כולל דירוג. Document — יחידת נתונים דמוית-JSON. Index — אוסף Documents, מקביל ל-Table/Collection. Mapping — הגדרת סכמה, כולל איך כל שדה מאונדקס.


תרגיל חשיבה

שאלת פתיחה: “אתם מחפשים ‘מחשב נייד’ בחנות אונליין. אילו תוצאות הייתם רוצים לראות שגם: כתיב שונה מעט (‘מחשב נייד’ מול ‘לפטופ’), או סדר מילים הפוך? האם WHERE LIKE ב-SQL יכול לתת לכם את זה?”

מהלך: תנו לסטודנטים לחשוב על התרחישים — LIKE '%מחשב נייד%' לא ימצא “לפטופ” (מילה שונה לגמרי) ולא ימצא “נייד מחשב” (סדר הפוך). הובילו לתובנה: חיפוש “חכם” דורש הבנת מילים ומשמעות, לא רק התאמת תווים רציפה — זו בדיוק הבעיה ש-Elasticsearch נבנה לפתור.

מה המרצה מראה בסוף: הריצו חיפוש LIKE ב-SQL מול חיפוש Elasticsearch (match query, גם אם רק רמז לשיעור הבא) על אותם נתונים — הראו ש-Elasticsearch מוצא התאמות ש-LIKE מפספס, ומדרג לפי רלוונטיות במקום להחזיר רשימה לא-מסודרת.