Elasticsearch Multi-Get

Elasticsearch Multi Get



מאמר זה ידון כיצד להשתמש ב-API של Elasticsearch multi-get כדי להביא מספר מסמכי JSON בהתבסס על המזהים שלהם. בנוסף, Elasticsearch מאפשר לך להשתמש בשאילתת קבל בודדת כדי לאחזר את המסמכים מהמדדים באמצעות מזהי המסמכים בלבד.

בוא נחקור.







תחביר בקש

להלן התחביר עבור ה-API של Elasticsearch multi-get:



קבל /_mget
קבל / /_mget

ה-API של multi-get תומך במספר מדדים המאפשרים לך להביא את המסמכים גם אם הם לא באותו אינדקס.



הבקשה תומכת בפרמטרי הנתיב הבאים:





  1. <אינדקס> – שם האינדקס שממנו ניתן לאחזר את המסמכים כפי שמצוין בתעודות הזהות שלהם.

אתה יכול גם לציין את פרמטרי השאילתה האחרים כפי שמוצג:

  1. הַעֲדָפָה – מגדיר את הצומת או הרסיס המועדפים.
  2. זמן אמת - אם מוגדר כ-true, הפעולה מבוצעת בזמן אמת.
  3. לְרַעֲנֵן - מאלץ את הפעולה לרענן את רסיסי המטרה לפני שליפת המסמכים שצוינו.
  4. ניתוב – ערך המשמש לניתוב הפעולות לרסיס ספציפי.
  5. שדות_חנות – מאחזר את שדות המסמך המאוחסנים באינדקס ולא במסמך.
  6. _מָקוֹר – ערך בוליאני המגדיר אם הבקשה צריכה להחזיר את השדה _source או לא.

השאילתה דורשת את הגוף, הכולל את הערכים הבאים:



  1. מסמכים – מציין את המסמכים שברצונך להביא. בנוסף, סעיף זה תומך בתכונות הבאות:
    • _תְעוּדַת זֶהוּת - מזהה ייחודי של מסמך היעד.
    • _אינדקס – האינדקס המכיל את מסמך היעד.
    • ניתוב – המפתח עבור הרסיס הראשי של המסמך.
    • _מָקוֹר – אם נכון, הוא כולל את כל שדות המקור; אחרת, זה לא כולל אותם.
    • _שדות_מאוחסנים – השדות המאוחסנים שברצונך לכלול.
  2. זיהויים - המזהים של המסמכים שברצונך להביא.

דוגמה 1: אחזר מספר מסמכים מאותו אינדקס

הדוגמה הבאה מראה כיצד להשתמש ב-Elasticsearch multi-get API כדי לאחזר את המסמכים עם מזהים ספציפיים מאינדקס Netflix:

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: reporting' -H 'Content-Type: application/json' -d'
{
'מסמכים': [
{
'_id': 'T3wnVoMBck2AEzXPytlJ'
},
{
'_id': 'W3wnVoMBck2AEzXPytlJ'
}
]
}'

הבקשה הנתונה צריכה להביא את המסמכים עם המזהים שצוינו מאינדקס Netflix. הפלט המתקבל הוא כפי שמוצג:

{
'מסמכים': [
{
'_index': 'נטפליקס',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_version': 1,
'_seq_no': 0,
'_primary_term': 1,
'נמצא': נכון,
'_source': {
'duration': '90 דקות',
'listed_in': 'תיעודיים',
'country': 'ארצות הברית',
'date_added': '25 בספטמבר 2021',
'show_id': 's1',
'director': 'קירסטן ג'ונסון',
'שנת_release': 2020,
'rating': 'PG-13',
'תיאור': 'כשאביה מתקרב לסוף חייו, יוצרת הסרט קירסטן ג'ונסון מבימת את מותו בדרכים המצאתיות וקומיות כדי לעזור לשניהם להתמודד עם הבלתי נמנע.'
'type': 'סרט',
'title': 'דיק ג'ונסון מת'
}
},
{
'_index': 'נטפליקס',
'_id': 'W3wnVoMBck2AEzXPytlJ',
'_version': 1,
'_seq_no': 12,
'_primary_term': 1,
'נמצא': נכון,
'_source': {
'country': 'גרמניה, צ'כיה',
'show_id': 's13',
'director': 'כריסטיאן שווכוב',
'שנת_release': 2021,
'rating': 'TV-MA',
'תיאור': 'לאחר שרוב בני משפחתה נרצחים בהפצצת טרור, אישה צעירה מפתתה ללא ידיעתו להצטרף לקבוצה עצמה שהרגה אותם.',
'type': 'סרט',
'title': 'אני קארל',
'duration': '127 דקות',
'listed_in': 'דרמות, סרטים בינלאומיים',
'קאסט': 'לונה ודלר, יאניס ניווהנר, מילאן פשל, אדין חסנוביץ', אנה פיאלובה, מרלון בואס, ויקטור בוקארד, פלר גפרייר, עזיז דיאב, מלאני פושה, אליזבטה מקסימובה',
'date_added': '23 בספטמבר 2021'
}
}
]

}

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

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: reporting' -H 'Content-Type: application/json' -d'
{
'ids': ['T3wnVoMBck2AEzXPytlJ', 'W3wnVoMBck2AEzXPytlJ']
}'

הבקשה הקודמת צריכה לבצע פעולה דומה.

דוגמה 2: אחזר את המסמכים ממספר מדדים

בדוגמה הבאה, הבקשה מביאה מספר מסמכים ממדדים שונים כפי שמוצג:

curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf: reporting' -H 'Content-Type: application/json' -d'
{
'מסמכים': [
{
'_index': 'נטפליקס',
'_id': 'T3wnVoMBck2AEzXPytlJ'
},
{
'_index': 'דיסני',
'_id': '8j4wWoMB1yF5VqfaKCE4'
}
]
}'

הפלט המתקבל הוא כפי שמוצג:

דוגמה 3: אל תכלול שדות ספציפיים

אנו יכולים לא לכלול שדות ספציפיים מבקשה נתונה באמצעות הפרמטרים source_include ו-source_exclude.

דוגמה היא כפי שמוצג:

curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf: reporting' -H 'Content-Type: application/json' -d'
{
'מסמכים': [
{
'_index': 'נטפליקס',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_source': false
},
{
'_index': 'נטפליקס',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_source': {
'include': [ 'listed_in', 'release_year', 'title' ],
'exclude': [ 'description', 'type', 'date_added' ]
}
}
]

}'

הבקשה הנתונה משתמשת ב-source include and exclude כדי לציין אילו שדות ברצונך לאחזר במסמך נתון.

הפלט המתקבל הוא כפי שמוצג:

סיכום

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

קידוד שמח!