# Kibana — ויזואליזציה לנתוני Elasticsearch📖 שיעור

## מה זה?

כתיבת שאילתת JSON כל פעם רק כדי "לבדוק מה יש ב-Index" מסורבלת. Kibana פותר את זה: ממשק ויזואלי שרץ לצד Elasticsearch, נותן עורך שאילתות נוח (Dev Tools), חיפוש חופשי בלי קוד, ולוחות מחוונים (Dashboards) עם גרפים שנבנים מ-Aggregations — בדיוק כמו שכבר תרגלנו, אבל מוצגים ויזואלית במקום JSON גולמי.

## מילות מפתח שחשוב לזכור

• Kibana — כלי ויזואליזציה וניהול שמתחבר ל-Elasticsearch, בדרך כלל רץ כקונטיינר נפרד לצדו

• Dev Tools — עורך שאילתות מובנה בתוך Kibana, נוח לכתיבה ובדיקה של שאילתות JSON בלי קוד C#/curl

• Index Pattern (Data View) — הגדרה ב-Kibana שאומרת לה על אילו Indices להסתכל בעת יצירת ויזואליזציות

• Dashboard — לוח מחוונים עם כמה גרפים/טבלאות יחד, נבנה מ-Aggregations שכבר מוכרות

```yaml
# docker-compose.yml — Elasticsearch + Kibana together (a hint for the next unit)
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false
    ports:
      - "9200:9200"

  kibana:
    image: docker.elastic.co/kibana/kibana:8.15.0
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
```

```
# Dev Tools inside Kibana — the same query already written in previous lessons,
# but in a convenient editor with autocomplete, no curl/code:

GET /products/_search
{
  "query": { "match": { "name": "shoes" } }
}
```

## הסבר עיקרי

Kibana לא מחליף שום דבר שכבר נלמד — כל שאילתת `match`/`term`/`bool`/`aggs` שכבר נכתבה עדיין עובדת בדיוק אותו הדבר — Kibana רק נותן **ממשק נוח יותר** לכתוב ולהריץ אותן (Dev Tools), ולתרגם Aggregations לגרפים ויזואליים (Dashboards) במקום JSON גולמי שצריך לפרש בעין.

Index Pattern הוא הגשר בין Elasticsearch ל-Kibana — לפני שאפשר לבנות ויזואליזציה, Kibana צריכה לדעת "על אילו Indices להסתכל" — Index Pattern (שם חדש יותר: Data View) הוא ההגדרה הזו. זה שלב חד-פעמי, לא צריך להגדיר מחדש לכל גרף.

Dashboard בונה על Aggregations שכבר מוכרות — גרף "כמות מוצרים לפי קטגוריה" ב-Kibana הוא בדיוק ה-`terms` Aggregation מהשיעור הרביעי, רק מוצג כעוגה/עמודות ויזואלית במקום JSON עם מספרים. מי שמבין Aggregations כבר מבין את הבסיס הרעיוני של כל Dashboard ב-Kibana.

## יתרונות

Kibana נותן ממשק ויזואלי נוח לבדיקת נתונים ושאילתות בלי לכתוב קוד; Dev Tools עם Autocomplete מאיץ כתיבת שאילתות JSON; Dashboards הופכים Aggregations למידע ויזואלי קריא לבעלי עניין לא-טכניים.

## חסרונות

Kibana דורש קונטיינר/משאב נוסף לצד Elasticsearch עצמו; Dashboards מורכבים דורשים זמן בנייה, ולא תמיד מחליפים שאילתה תוכנתית ממוקדת בקוד.

## נקודות חשובות

• Kibana הוא כלי ויזואליזציה/ניהול, לא מחליף את Elasticsearch — עובד **לצדו**

• Dev Tools מאפשר לכתוב את אותן שאילתות JSON שכבר נלמדו, בממשק נוח יותר

• Index Pattern (Data View) הוא השלב שמחבר Kibana ל-Index ספציפי לפני ויזואליזציה

• Dashboard = ויזואליזציה של Aggregations שכבר מוכרות, לא מושג חדש בפני עצמו

## טעויות נפוצות

• לחשוב ש-Kibana הוא DB נפרד או תחליף ל-Elasticsearch — הוא רק שכבת ויזואליזציה מעליו

• לנסות לבנות Dashboard בלי להגדיר Index Pattern קודם — הוא לא "יודע" על אילו נתונים להסתכל

• להתעלם מ-Dev Tools ולהמשיך לכתוב שאילתות רק ב-curl/קוד — מפספס כלי בדיקה מהיר ונוח

## סיכום

Kibana הוא כלי ויזואליזציה וניהול שרץ לצד Elasticsearch — Dev Tools נותן עורך שאילתות נוח (אותן שאילתות `match`/`bool`/`aggs` שכבר נלמדו), ו-Dashboards הופכים Aggregations למידע ויזואלי (גרפים, טבלאות) לבעלי עניין לא-טכניים. Index Pattern הוא השלב שמחבר Kibana ל-Index ספציפי. זהו סיום היחידה — כל הכלים (Document/Index/Mapping, text/keyword, שאילתות, Aggregations) מתחברים כאן לחוויית עבודה שלמה.

## דוקומנטציה רשמית

[Kibana — Documentation](https://www.elastic.co/guide/en/kibana/current/index.html)

---

## תרגילים

### תרגיל 1 — הרצת Kibana והתחברות

**המשימה:** הריצו Kibana כקונטיינר (עם `docker-compose` מהדוגמה או `docker run` נפרד), וגשו אליו דרך הדפדפן (`localhost:5601`).

**בדיקה:** ממשק Kibana נטען בהצלחה ומראה שהוא מחובר ל-Elasticsearch.

### תרגיל 2 — Dev Tools

**המשימה:** הריצו ב-Dev Tools של Kibana שאילתה שכבר כתבתם בשיעורים קודמים (למשל `bool` עם `must`+`filter`).

**בדיקה:** התוצאה זהה למה שקיבלתם קודם דרך curl/קוד — הוכחה ש-Kibana רק "עוד ממשק" לאותה Elasticsearch.

---

## פרויקט מסכם

**המשימה:** בנו Dashboard בסיסי ב-Kibana ל-Index `products` או `Articles`.

**דרישות:**
1. הגדירו Index Pattern (Data View) ל-Index הרלוונטי
2. צרו ויזואליזציה אחת מבוססת `terms` Aggregation (למשל עוגה/עמודות לפי קטגוריה/תג)
3. צרו ויזואליזציה שנייה מבוססת Metric (למשל ממוצע מחיר, או ציר זמן לפי תאריך פרסום)
4. שלבו את שתיהן ב-Dashboard אחד

**בדיקה:** ה-Dashboard מציג את שתי הויזואליזציות עם נתונים נכונים, תואמים למה שהתקבל בשאילתות JSON המקבילות בשיעורים הקודמים.

## מה בפרק הבא

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