إعداد اتصال مفهرس بقاعدة بيانات Cosmos DB باستخدام هوية مدارة

توضح هذه المقالة كيفية إعداد اتصال مفهرس Azure Cognitive Search إلى قاعدة بيانات قاعدة بيانات Azure Cosmos باستخدام هوية مدارة بدلا من توفير بيانات اعتماد في سلسلة الاتصال.

يمكنك استخدام هوية مدارة معينة من قبل النظام أو هوية مدارة (معاينة) معينة من قبل المستخدم. الهويات المدارة هي عمليات تسجيل الدخول إلى Azure AD وتتطلب تعيينات دور Azure للوصول إلى البيانات في Cosmos DB. للحصول على خطوات تفصيلية، راجع ⁧⁩تعيين أدوار Azure باستخدام مدخل Microsoft Azure⁧⁩.

قبل معرفة المزيد حول هذه الميزة، يوصى بأن يكون لديك فهم لماهية المفهرس وكيفية إعداد مفهرس لمصدر البيانات الخاص بك. يمكن العثور على مزيد من المعلومات على الروابط التالية:

المتطلبات الأساسية

  • أنشئ هوية مدارة لخدمة البحث.

  • تعيين دور في قاعدة بيانات كوزموس. للوصول إلى قارئ البيانات، ستحتاج إلى دور قارئ حساب قاعدة بيانات Cosmos والهوية المستخدمة لتقديم الطلب. يعمل هذا الدور مع جميع واجهات برمجة تطبيقات قاعدة بيانات Cosmos المدعومة من البحث المعرفي.

أسهل طريقة لاختبار الاتصال هي استخدام معالج استيراد البيانات. يدعم المعالج اتصالات مصدر البيانات لكل من هويات النظام والمستخدم المدارة.

إنشاء مصدر البيانات

قم بإنشاء مصدر البيانات وتوفير إما هوية مدارة معينة من قبل النظام أو هوية مدارة (معاينة) معينة من قبل المستخدم في سلسلة الاتصال.

الهوية المُدارة التي يُعيّنها النظام

تدعم واجهة برمجة تطبيقات REST ومدخل Azure و.NET SDK باستخدام هوية مدارة معينة من قبل النظام.

عند الاتصال بهوية مدارة معينة من قبل النظام، فإن التغيير الوحيد في تعريف مصدر البيانات هو تنسيق الخاصية "بيانات الاعتماد". ستوفر اسم قاعدة البيانات ومعرف ResourceId الذي لا يحتوي على مفتاح حساب أو كلمة مرور. يجب أن يتضمن ResourceId معرف الاشتراك الخاص بقاعدة بيانات Cosmos ومجموعة الموارد واسم حساب قاعدة بيانات Cosmos.

  • بالنسبة SQL المجموعات ، لا تتطلب سلسلة الاتصال "ApiKind".
  • بالنسبة لمجموعات MongoDB ، أضف "ApiKind = MongoDb" إلى سلسلة الاتصال واستخدم واجهة برمجة تطبيقات REST للمعاينة.
  • بالنسبة إلى الرسوم البيانية ل Gremlin ، أضف "ApiKind = Gremlin" إلى سلسلة الاتصال واستخدم واجهة برمجة تطبيقات REST للمعاينة.

فيما يلي مثال على كيفية إنشاء مصدر بيانات لفهرسة البيانات من حساب تخزين باستخدام واجهة برمجة تطبيقات REST لإنشاء مصدر بيانات وسلسلة اتصال هوية مدارة. تنسيق سلسلة اتصال الهوية المدارة هو نفسه ل REST API و .net SDK ومدخل Azure.

POST https://[service name].search.windows.net/datasources?api-version=2020-06-30
Content-Type: application/json
api-key: [Search service admin key]

{
    "name": "[my-cosmosdb-ds]",
    "type": "cosmosdb",
    "credentials": {
        "connectionString": "ResourceId=/subscriptions/[subscription-id]/resourceGroups/[rg-name]/providers/Microsoft.DocumentDB/databaseAccounts/[cosmos-account-name];Database=[cosmos-database];ApiKind=[SQL | Gremlin | MongoDB];"
    },
    "container": { "name": "[my-cosmos-collection]", "query": null },
    "dataChangeDetectionPolicy": null

 
}

الهوية المدارة المعينة من قبل المستخدم (المعاينة)

تدعم واجهة برمجة تطبيقات REST للمعاينة 2021-04-30 الاتصالات استنادا إلى هوية مدارة معينة من قبل المستخدم. عند الاتصال بهوية مدارة معينة من قبل المستخدم، هناك تغييران في تعريف مصدر البيانات:

  • أولا ، تنسيق الخاصية "بيانات الاعتماد" هو اسم قاعدة البيانات و ResourceId الذي لا يحتوي على مفتاح حساب أو كلمة مرور. يجب أن يتضمن ResourceId معرف الاشتراك الخاص بقاعدة بيانات Cosmos ومجموعة الموارد واسم حساب قاعدة بيانات Cosmos.

    • بالنسبة SQL المجموعات ، لا تتطلب سلسلة الاتصال "ApiKind".
    • بالنسبة لمجموعات MongoDB ، أضف "ApiKind = MongoDb" إلى سلسلة الاتصال
    • بالنسبة للرسوم البيانية Gremlin ، أضف "ApiKind = Gremlin" إلى سلسلة الاتصال.
  • ثانيا، ستضيف خاصية "هوية" تحتوي على مجموعة الهويات المدارة المعينة من قبل المستخدم. يجب توفير هوية مدارة واحدة فقط تم تعيينها من قبل المستخدم عند إنشاء مصدر البيانات. قم بتعيينه لكتابة "userAssignIdentity".

فيما يلي مثال على كيفية إنشاء كائن مصدر بيانات مفهرس باستخدام واجهة برمجة تطبيقات REST لإنشاء أو تحديث مصدر البيانات :

POST https://[service name].search.windows.net/datasources?api-version=2021-04-30-preview
Content-Type: application/json
api-key: [Search service admin key]

{
    "name": "[my-cosmosdb-ds]",
    "type": "cosmosdb",
    "credentials": {
        "connectionString": "ResourceId=/subscriptions/[subscription-id]/resourceGroups/[rg-name]/providers/Microsoft.DocumentDB/databaseAccounts/[cosmos-account-name];Database=[cosmos-database];ApiKind=[SQL | Gremlin | MongoDB];"
    },
    "container": { 
        "name": "[my-cosmos-collection]", "query": null 
    },
    "identity" : { 
        "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
        "userAssignedIdentity": "/subscriptions/[subscription-id]/resourcegroups/[rg-name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[my-user-managed-identity-name]" 
    },
    "dataChangeDetectionPolicy": null
}

إنشاء الفهرس

يحدد الفهرس الحقول الموجودة في مستند وسمات وتركيبات أخرى تشكل تجربة البحث.

في ما يلي استدعاء إنشاء فهرس REST API مع حقل قابل للبحث booktitle :

POST https://[service name].search.windows.net/indexes?api-version=2020-06-30
Content-Type: application/json
api-key: [admin key]

{
    "name" : "my-target-index",
    "fields": [
    { "name": "id", "type": "Edm.String", "key": true, "searchable": false },
    { "name": "booktitle", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false }
    ]
}

إنشاء المفهرس

يربط المفهرس مصدر بيانات بفهرس بحث مستهدف ويوفر جدولا زمنيا لأتمتة تحديث البيانات. بمجرد إنشاء الفهرس ومصدر البيانات، تصبح جاهزا لإنشاء المفهرس وتشغيله.

فيما يلي استدعاء واجهة برمجة تطبيقات إنشاء مفهرس REST مع تعريف مفهرس قاعدة بيانات Cosmos. سيتم تشغيل المفهرس عند إرسال الطلب.

    POST https://[service name].search.windows.net/indexers?api-version=2020-06-30
    Content-Type: application/json
    api-key: [admin key]

    {
      "name" : "cosmos-db-indexer",
      "dataSourceName" : "cosmos-db-datasource",
      "targetIndexName" : "my-target-index"
    }

استكشاف الأخطاء وإصلاحها

إذا قمت مؤخرا بتدوير مفاتيح حساب Cosmos DB ، فستحتاج إلى الانتظار لمدة تصل إلى 15 دقيقة حتى تعمل سلسلة اتصال الهوية المدارة.

تحقق لمعرفة ما إذا كان حساب Cosmos DB مقيدا بالوصول إلى شبكات محددة. يمكنك استبعاد أي مشكلات تتعلق بجدار الحماية من خلال تجربة الاتصال دون قيود.

راجع أيضًا