On this page
מערך שיעור: text מול keyword
משך: 1.5 שעות אקדמיות (68 דקות).
מטרת השיעור: הסטודנטים יבינו מתי להשתמש ב-text ומתי ב-keyword, ויתקנו Mapping שגוי בפועל.
בסוף השיעור הסטודנטים צריכים: להסביר Tokenization בקצרה, לבחור נכון בין text ל-keyword לפי סוג השדה, ולהשתמש ב-fields למיפוי כפול.
דגש קריטי: הדגימו את ה"שבירה השקטה" בפועל — קיבוץ שמתפרק למילים בודדות — זו ההוכחה הכי משכנעת לחשיבות הבחירה הנכונה.
מהלך השיעור
| חלק בשיעור | משך | הערות ודגשים |
|---|---|---|
| פתיחה וחיבור | 5 דקות | הזכירו: name=text, category=keyword מהשיעור הקודם — “למה?” |
| הרעיון: text + Tokenization | 15 דקות | פיצול למילים, הדגימו חיפוש חלקי מוצלח |
| הרעיון: keyword | 15 דקות | שלם ומדויק, הדגימו term query |
| הבעיה: בחירה הפוכה | 15 דקות | קיבוץ על text — תוצאה שבורה, בשידור חי |
| fields — מיפוי משולב | 13 דקות | name + name.keyword |
| תרגול מודרך | 5 דקות | תרגיל 1 |
דגשים להעברת השיעור
- ה"שבירה השקטה" (בלי שגיאה, רק תוצאה מוזרה) היא הנקודה הכי חשובה בשיעור — סטודנטים צריכים להבין שElasticsearch לא “יזעיק” אותם על מיפוי שגוי, הם צריכים לזהות את זה בעצמם דרך תוצאות מוזרות.
- אל תדלגו על הדגמת
termעל שדהtextשנכשל — זו נקודת בלבול קלאסית (מצפים שtem ימצא, לא מוצא כלום). - fields (מיפוי משולב) שווה להציג כ"פתרון הנפוץ בפועל" — כמעט כל שדה טקסט חשוב בפרויקט אמיתי מקבל את שני המיפויים יחד.
מושגים
text — מנותח למילים, לחיפוש חכם.
keyword — שלם ומדויק, לסינון/מיון/קיבוץ.
Tokenization — פיצול טקסט למילים בודדות.
תרגיל חשיבה
שאלת פתיחה: “יצרתם Index של מוצרים עם category כ-text בטעות. אתם רוצים לדעת ‘כמה מוצרים בכל קטגוריה’. מה תראו כשתריצו קיבוץ, ולמה זה מוזר?”
מהלך: תנו לסטודנטים לנחש לפני ההדגמה. הובילו לתובנה: הקיבוץ יראה מילים בודדות מתוך שמות הקטגוריות (למשל “הנעלה” עשוי להישאר שלם אם זו מילה אחת, אבל “אלקטרוניקה ומחשבים” יתפרק ל"אלקטרוניקה", “ו”, “מחשבים” נפרדים) — לא קטגוריות שלמות והגיוניות.
מה המרצה מראה בסוף: הריצו בפועל קיבוץ על שדה category שהוגדר כ-text עם ערך רב-מילים (“אלקטרוניקה ומחשבים”) — הראו את הפירוק המוזר. אז שנו ל-keyword (עם Reindex) והריצו שוב — הראו את התוצאה הנכונה, קטגוריה שלמה אחת.