البرنامج التعليمي: الفهرس من مصادر بيانات متعددة باستخدام NET SDK.

يمكن ل Azure الذكاء الاصطناعي Search استيراد البيانات وتحليلها وفهرستها من مصادر بيانات متعددة إلى فهرس بحث موحد واحد.

يستخدم هذا البرنامج التعليمي C# مكتبة عميل Azure.Search.Documents في Azure SDK ل .NET لفهرسة نموذج بيانات الفندق من مثيل Azure Cosmos DB، ويدمج ذلك مع تفاصيل غرفة الفندق المستمدة من مستندات Azure Blob Storage. والنتيجة هي فهرس بحث مجمع للفنادق يحتوي على مستندات فندقية، مع غرف لأنواع بيانات معقدة.

في هذا البرنامج التعليمي، ستقوم بتنفيذ المهام التالية:

  • تحميل البيانات النموذجية وإنشاء مصادر البيانات
  • تحديد مفتاح المستند
  • تحديد وإنشاء الفهرس
  • فهرسة بيانات الفندق من Azure Cosmos DB
  • دمج بيانات غرفة الفندق من مخزن كائنات ثنائية كبيرة الحجم

في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.

نظرة عامة

يستخدم هذا البرنامج التعليمي Azure.Search.Documents لإنشاء وتشغيل مفهرسات متعددة. في هذا البرنامج التعليمي، ستقوم بإعداد مصدرين من مصادر بيانات Azure بحيث يمكنك تكوين مفهرس يسحب من كليهما لتعبئة فهرس بحث واحد. يجب أن يكون لمجموعتي البيانات قيمة مشتركة لدعم الدمج. في هذه العينة، هذا الحقل معرِّف. طالما هناك حقل مشترك لدعم التعيين، يمكن للمفهرس دمج البيانات من موارد متباينة: البيانات المنظمة من Azure SQL، أو البيانات غير المنظمة من تخزين Blob، أو أي مجموعة من مصادر البيانات المدعومة على Azure.

يمكن العثور على نسخة نهائية من التعليمة البرمجية في هذا البرنامج التعليمي في المشروع التالي:

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

إشعار

يمكنك استخدام خدمة بحث مجانية لهذا البرنامج التعليمي. يقتصر المستوى المجاني على ثلاثة فهارس وثلاثة مفهرسات وثلاثة مصادر بيانات. ينشئ هذا البرنامج التعليمي واحدًا من كلٍّ منها. قبل البدء، تأكد من أن لديك مساحة في خدمتك لقبول الموارد الجديدة.

1 - إنشاء الخدمات

يستخدم هذا البرنامج التعليمي Azure الذكاء الاصطناعي البحث عن الفهرسة والاستعلامات، وAzure Cosmos DB لمجموعة بيانات واحدة، وAzure Blob Storage لمجموعة البيانات الثانية.

إذا أمكن، فقم بإنشاء جميع الخدمات في نفس المنطقة ومجموعة الموارد من أجل التقارب وسهولة الإدارة. من الناحية العملية، يمكن أن تكون خدماتك في أي منطقة.

هذه العينة تستخدم مجموعتين صغيرتين من البيانات التي تصف سبعة فنادق خيالية. مجموعة واحدة تصف الفنادق نفسها، وسيتم تحميلها في قاعدة بيانات Azure Cosmos DB. تحتوي المجموعة الأخرى على تفاصيل غرفة الفندق، ويتم توفيرها في شكل سبعة ملفات JSON منفصلة ليتم تحميلها في Azure Blob Storage.

البدء ب Azure Cosmos DB

  1. سجل الدخول إلى مدخل Microsoft Azure، ثم انتقل إلى صفحة نظرة عامة على حساب Azure Cosmos DB.

  2. حدد مستكشف البيانات ثم حدد قاعدة بيانات جديدة.

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

  3. أدخل اسم hotel-rooms-db. اقبل القيم الافتراضية للإعدادات المتبقية.

    تكوين قاعدة البيانات

  4. إنشاء حاوية جديدة. استخدم قاعدة البيانات الموجودة التي أنشأتها للتو. أدخل hotels لاسم الحاوية، واستخدم /HotelId لمفتاح القسم.

    إضافة حاوية

  5. حدد Items ضمن hotels، ثم حدد Upload Item في شريط الأوامر. انتقل إلى ثم حدد الملف cosmosdb/HotelsDataSubset_CosmosDb.json في مجلد المشروع.

    تحميل إلى مجموعة Azure Cosmos DB

  6. استخدم الزر "تحديث" لتحديث طريقة عرضك للعناصر الموجودة في مجموعة الفنادق. يجب أن ترى سبعة مستندات قاعدة بيانات جديدة مدرجة.

  7. انسخ سلسلة الاتصال من صفحة Keys إلى المفكرة. ستحتاج إلى هذه القيمة appsettings.json في خطوة لاحقة. إذا لم تستخدم اسم قاعدة البيانات المقترح "hotel-rooms-db"، فانسخ اسم قاعدة البيانات أيضا.

Azure Blob Storage

  1. سجل الدخول إلى مدخل Microsoft Azure، وانتقل إلى حساب تخزين Azure، وحدد Blobs، ثم حدد + Container.

  2. إنشاء حاوية كائن ثنائي كبير الحجم تسمى hotel-rooms لتخزين نموذج ملفات JSON لغرفة الفندق. يمكنك تعيين مستوى الوصول العام إلى أي من قيمه الصالحة.

    إنشاء حاوية BLOB

  3. بعد إنشاء الحاوية، افتحها وحدد Upload على شريط الأوامر. انتقل إلى المجلد الذي يحتوي على ملفات العينة. حدد كل منهم ثم حدد تحميل.

    تحميل الملفات

  4. انسخ اسم حساب التخزين سلسلة الاتصال من صفحة مفاتيح الوصول إلى المفكرة. ستحتاج إلى كلتا القيمتين appsettings.json في خطوة لاحقة.

المكون الثالث هو Azure الذكاء الاصطناعي Search، والذي يمكنك إنشاؤه في المدخل أو العثور على خدمة بحث موجودة في موارد Azure.

للمصادقة على خدمة البحث، ستحتاج إلى عنوان URL للخدمة ومفتاح وصول.

  1. سجل الدخول إلى مدخل Microsoft Azure، وفي صفحة نظرة عامة على خدمة البحث، احصل على عنوان URL. قد يبدو مثال نقطة النهاية بالشكل https://mydemo.search.windows.net.

  2. في الإعدادات>Keys، احصل على مفتاح مسؤول للحصول على الحقوق الكاملة على الخدمة. هناك مفتاحان مسؤولان قابلان للتبديل، مقدمان لاستمرارية العمل في حالة الحاجة إلى لفة واحدة. يمكنك استخدام المفتاح الأساسي أو الثانوي عند طلبات إضافة الكائنات وتعديلها وحذفها.

    احصل على اسم الخدمة ومفاتيح المسؤول والاستعلام

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

2 - إعداد بيئتك

  1. ابدأ تشغيل Visual Studio وفي قائمة أدوات، حدد NuGet مدير الحِزَم ثم إدارة حزم NuGet للحل....

  2. في علامة التبويب استعراض، ابحث عن Azure.Search.Documents (الإصدار 11.0 أو أحدث) ثم قم بتثبيته.

  3. ابحث عن حزم Microsoft.Extensions.Configuration وMicrosoft.Extensions.Configuration.Json NuGet وقم بتثبيتها أيضا.

  4. افتح ملف الحل /v11/AzureSearchMultipleDataSources.sln.

  5. في مستكشف الحلول، قم بتحرير ملف appsettings.json لإضافة معلومات الاتصال.

    {
      "SearchServiceUri": "<YourSearchServiceURL>",
      "SearchServiceAdminApiKey": "<YourSearchServiceAdminApiKey>",
      "BlobStorageAccountName": "<YourBlobStorageAccountName>",
      "BlobStorageConnectionString": "<YourBlobStorageConnectionString>",
      "CosmosDBConnectionString": "<YourCosmosDBConnectionString>",
      "CosmosDBDatabaseName": "hotel-rooms-db"
    }
    

أول إدخالين هما عنوان URL ومفاتيح المسؤول لخدمة البحث. استخدم نقطة النهاية الكاملة، على سبيل المثال: https://mydemo.search.windows.net.

تحدد الإدخالات التالية أسماء الحسابات ومعلومات سلسلة الاتصال لتخزين Azure Blob ومصادر بيانات Azure Cosmos DB.

3 - تعيين الحقول الرئيسية

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

في Azure الذكاء الاصطناعي Search، يعرف حقل المفتاح كل مستند بشكل فريد. يجب أن يحتوي كل فهرس بحث على حقل مفتاح واحد بالضبط من النوع Edm.String. يجب أن يكون حقل المفتاح هذا موجودًا لكل مستند في مصدر بيانات تمت إضافته إلى الفهرس. (في الواقع، هذا هو الحقل الوحيد المطلوب.)

عند فهرسة البيانات من مصادر بيانات متعددة، تأكد من أن كل صف أو مستند وارد يحتوي على مفتاح مستند شائع لدمج البيانات من مستندين مختلفين ماديًا في مستند بحث جديد في الفهرس المدمج.

غالبًا ما يتطلب الأمر بعض التخطيط المسبق لتحديد مفتاح مستند ذي مغزى لفهرسك، والتأكد من وجوده في كلا مصدري البيانات. في هذا العرض التوضيحي HotelId ، المفتاح لكل فندق في Azure Cosmos DB موجود أيضا في الغرف JSON blobs في تخزين Blob.

يمكن لمفهرسات Azure الذكاء الاصطناعي Search استخدام تعيينات الحقول لإعادة تسمية حقول البيانات وحتى إعادة تنسيقها أثناء عملية الفهرسة، بحيث يمكن توجيه بيانات المصدر إلى حقل الفهرس الصحيح. على سبيل المثال، في Azure Cosmos DB، يسمى HotelIdمعرف الفندق . ولكن في ملفات كائن ثنائي كبير الحجم JSON لغرف الفندق، يسمى Idمعرف الفندق . يعالج البرنامج هذا التناقض عن طريق تعيين Id الحقل من الكائنات الثنائية كبيرة الحجم إلى HotelId حقل المفتاح في المفهرس.

إشعار

في معظم الحالات، لا تقوم مفاتيح المستندات التي تم إنشاؤها تلقائيًا، مثل تلك التي تم إنشاؤها افتراضيًا بواسطة بعض المفهرسات، بإنشاء مفاتيح مستندات جيدة للفهارس المدمجة. بشكل عام، ستحتاج إلى استخدام قيمة مفتاح فريدة وذات مغزى موجودة بالفعل في مصادر البيانات الخاصة بك أو يمكن إضافتها بسهولة إليها.

4 - اكتشف التعليمات البرمجية

بمجرد أن تكون إعدادات البيانات والتكوين في مكانها، يجب أن يكون نموذج البرنامج في /v11/AzureSearchMultipleDataSources.sln جاهزا للبناء والتشغيل.

هذا التطبيق وحدة التحكم C#/.NET بسيط ينفذ المهام التالية:

  • ينشئ فهرسًا جديدًا استنادًا إلى بنية البيانات لفئة #C Hotel (والتي تشير أيضًا إلى فئتي العنوان والغرفة).
  • ينشئ مصدر بيانات جديدًا ومفهرسًا يقوم بتعيين بيانات Azure Cosmos DB لفهرسة الحقول. كلاهما كائنان في Azure الذكاء الاصطناعي Search.
  • تشغيل المفهرس لتحميل بيانات الفندق من Azure Cosmos DB.
  • ينشئ مصدر بيانات ثانيًا ومفهرسًا يقوم بتعيين بيانات JSON blob لفهرسة الحقول.
  • يقوم بتشغيل المفهرس الثاني لتحميل بيانات الغرف من تخزين Blob.

قبل تشغيل البرنامج، خذ دقيقة لدراسة الكود وتعريفات الفهرس والمفهرس لهذه العينة. الكود ذو الصلة موجود في ملفين:

  • يحتوي Hotel.cs على المخطط الذي يعرف الفهرس
  • يحتوي Program.cs على دالات تنشئ فهرس Azure الذكاء الاصطناعي Search ومصادر البيانات والمفهرسات، وتحميل النتائج المجمعة في الفهرس.

إنشاء فهرس

يستخدم هذا البرنامج النموذجي CreateIndexAsync لتعريف وإنشاء فهرس Azure الذكاء الاصطناعي Search. يستفيد من فئة FieldBuilder لإنشاء بنية فهرس من فئة نموذج بيانات C#‎.

يتم تحديد نموذج البيانات بواسطة فئة الفندق، والتي تحتوي أيضًا على مراجع إلى فئتي العنوان والغرفة. يقوم FieldBuilder بالتدريبات لأسفل من خلال تعريفات فئة متعددة لإنشاء بنية بيانات معقدة للمؤشر. يتم استخدام علامات بيانات التعريف لتعريف سمات كل حقل، مثل ما إذا كان قابلا للبحث أو للفرز.

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

تعرض القصاصات البرمجية التالية من ملف Hotel.cs حقولا مفردة، متبوعة بمرجع إلى فئة نموذج بيانات أخرى، Room[]، والتي بدورها يتم تعريفها في ملف Room.cs (غير معروض).

. . .
[SimpleField(IsFilterable = true, IsKey = true)]
public string HotelId { get; set; }

[SearchableField(IsFilterable = true, IsSortable = true)]
public string HotelName { get; set; }
. . .
public Room[] Rooms { get; set; }
. . .

في ملف Program.cs ، يتم تعريف SearchIndex باسم ومجموعة حقول تم إنشاؤها بواسطة FieldBuilder.Build الأسلوب، ثم يتم إنشاؤها على النحو التالي:

private static async Task CreateIndexAsync(string indexName, SearchIndexClient indexClient)
{
    // Create a new search index structure that matches the properties of the Hotel class.
    // The Address and Room classes are referenced from the Hotel class. The FieldBuilder
    // will enumerate these to create a complex data structure for the index.
    FieldBuilder builder = new FieldBuilder();
    var definition = new SearchIndex(indexName, builder.Build(typeof(Hotel)));

    await indexClient.CreateIndexAsync(definition);
}

أنشئ مفهرس ومصدر بيانات Azure Cosmos DB

ثم بعد ذلك، يتضمن البرنامج الرئيسي منطقًا لإنشاء مصدر بيانات Azure Cosmos DB لبيانات الفنادق.

أولاً، يربط اسم قاعدة بيانات Azure Cosmos DB بسلسلة الاتصال. ثم يعرف كائن SearchIndexerDataSource الاتصال ion.

private static async Task CreateAndRunCosmosDbIndexerAsync(string indexName, SearchIndexerClient indexerClient)
{
    // Append the database name to the connection string
    string cosmosConnectString =
        configuration["CosmosDBConnectionString"]
        + ";Database="
        + configuration["CosmosDBDatabaseName"];

    SearchIndexerDataSourceConnection cosmosDbDataSource = new SearchIndexerDataSourceConnection(
        name: configuration["CosmosDBDatabaseName"],
        type: SearchIndexerDataSourceType.CosmosDb,
        connectionString: cosmosConnectString,
        container: new SearchIndexerDataContainer("hotels"));

    // The Azure Cosmos DB data source does not need to be deleted if it already exists,
    // but the connection string might need to be updated if it has changed.
    await indexerClient.CreateOrUpdateDataSourceConnectionAsync(cosmosDbDataSource);

بعد إنشاء مصدر البيانات، يقوم البرنامج بإعداد مفهرس Azure Cosmos DB يسمى hotel-rooms-cosmos-indexer.

سيقوم البرنامج بتحديث أي مفهرسات موجودة بنفس الاسم، والكتابة فوق المفهرس الحالي بمحتوى الكود أعلاه. يتضمن أيضًا إجراءات إعادة التعيين والتشغيل، في حالة رغبتك في تشغيل هذا المثال أكثر من مرة.

يحدد المثال التالي جدولاً زمنيًا للمفهرس، بحيث يتم تشغيله مرة واحدة يوميًا. يمكنك إزالة خاصية الجدولة من هذه المكالمة إذا كنت لا تريد تشغيل المفهرس تلقائيًا مرة أخرى في المستقبل.

SearchIndexer cosmosDbIndexer = new SearchIndexer(
    name: "hotel-rooms-cosmos-indexer",
    dataSourceName: cosmosDbDataSource.Name,
    targetIndexName: indexName)
{
    Schedule = new IndexingSchedule(TimeSpan.FromDays(1))
};

// Indexers keep metadata about how much they have already indexed.
// If we already ran the indexer, it "remembers" and does not run again.
// To avoid this, reset the indexer if it exists.
try
{
    await indexerClient.GetIndexerAsync(cosmosDbIndexer.Name);
    // Reset the indexer if it exists.
    await indexerClient.ResetIndexerAsync(cosmosDbIndexer.Name);
}
catch (RequestFailedException ex) when (ex.Status == 404)
{
    // If the indexer does not exist, 404 will be thrown.
}

await indexerClient.CreateOrUpdateIndexerAsync(cosmosDbIndexer);

Console.WriteLine("Running Azure Cosmos DB indexer...\n");

try
{
    // Run the indexer.
    await indexerClient.RunIndexerAsync(cosmosDbIndexer.Name);
}
catch (RequestFailedException ex) when (ex.Status == 429)
{
    Console.WriteLine("Failed to run indexer: {0}", ex.Message);
}

يتضمن هذا المثال كتلة try-catch بسيطة للإبلاغ عن أي أخطاء قد تحدث في أثناء التنفيذ.

بعد تشغيل مفهرس Azure Cosmos DB، سيحتوي فهرس البحث على مجموعة كاملة من نماذج مستندات الفندق. ومع ذلك، سيكون حقل الغرف لكل فندق عبارة عن مصفوفة فارغة، نظرًا إلى أن مصدر بيانات Azure Cosmos DB يتجاهل تفاصيل الغرفة. بعد ذلك، سيتم سحب البرنامج من تخزين Blob لتحميل ودمج بيانات الغرفة.

إنشاء مفهرس ومصدر بيانات تخزين البيانات الثنائية الكبيرة

للحصول على تفاصيل الغرفة، يقوم البرنامج أولاً بإعداد مصدر بيانات تخزين Blob للإشارة إلى مجموعة من ملفات blob JSON الفردية.

private static async Task CreateAndRunBlobIndexerAsync(string indexName, SearchIndexerClient indexerClient)
{
    SearchIndexerDataSourceConnection blobDataSource = new SearchIndexerDataSourceConnection(
        name: configuration["BlobStorageAccountName"],
        type: SearchIndexerDataSourceType.AzureBlob,
        connectionString: configuration["BlobStorageConnectionString"],
        container: new SearchIndexerDataContainer("hotel-rooms"));

    // The blob data source does not need to be deleted if it already exists,
    // but the connection string might need to be updated if it has changed.
    await indexerClient.CreateOrUpdateDataSourceConnectionAsync(blobDataSource);

بعد إنشاء مصدر البيانات، يقوم البرنامج بإعداد مفهرس كائن ثنائي كبير الحجم يسمى hotel-rooms-blob-indexer، كما هو موضح أدناه.

تحتوي الكائنات الثنائية كبيرة الحجم JSON على حقل مفتاح يسمى Id بدلا من HotelId. تستخدم التعليمات البرمجية FieldMapping الفئة لإخبار المفهرس بتوجيه Id قيمة الحقل إلى HotelId مفتاح المستند في الفهرس.

يمكن لمفهرسات تخزين Blob استخدام IndexingParameters لتحديد وضع التحليل. يجب تعيين أوضاع تحليل مختلفة استنادا إلى ما إذا كانت الكائنات الثنائية كبيرة الحجم تمثل مستندا واحدا أو مستندات متعددة داخل نفس الكائن الثنائي كبير الحجم. في هذا المثال، يمثل كل كائن ثنائي كبير الحجم مستند JSON واحدا، لذلك تستخدم التعليمات البرمجية json وضع التحليل. لمزيد من المعلومات حول معلمات تحليل المفهرس لكائنات JSON الثنائية كبيرة الحجم، راجع فهرسة الكائنات الثنائية كبيرة الحجم ل JSON.

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

IndexingParameters parameters = new IndexingParameters();
parameters.Configuration.Add("parsingMode", "json");

SearchIndexer blobIndexer = new SearchIndexer(
    name: "hotel-rooms-blob-indexer",
    dataSourceName: blobDataSource.Name,
    targetIndexName: indexName)
{
    Parameters = parameters,
    Schedule = new IndexingSchedule(TimeSpan.FromDays(1))
};

// Map the Id field in the Room documents to the HotelId key field in the index
blobIndexer.FieldMappings.Add(new FieldMapping("Id") { TargetFieldName = "HotelId" });

// Reset the indexer if it already exists
try
{
    await indexerClient.GetIndexerAsync(blobIndexer.Name);
    await indexerClient.ResetIndexerAsync(blobIndexer.Name);
}
catch (RequestFailedException ex) when (ex.Status == 404) { }

await indexerClient.CreateOrUpdateIndexerAsync(blobIndexer);

try
{
    // Run the indexer.
    await searchService.Indexers.RunAsync(blobIndexer.Name);
}
catch (CloudException e) when (e.Response.StatusCode == (HttpStatusCode)429)
{
    Console.WriteLine("Failed to run indexer: {0}", e.Response.Content);
}

نظرًا إلى أنه تم بالفعل ملء الفهرس ببيانات الفندق من قاعدة بيانات Azure Cosmos DB، يقوم مفهرس البيانات الثنائية كبيرة الحجم بتحديث المستندات الموجودة في الفهرس وإضافة تفاصيل الغرفة.

إشعار

إذا كان لديك نفس الحقول غير الرئيسية في كلا مصدري البيانات، وكانت البيانات الموجودة في هذه الحقول غير متطابقة، فسيحتوي الفهرس على قيم من أي مفهرس تم تشغيله مؤخرًا. في مثالنا، يحتوي كلا مصدري البيانات على حقل HotelName . إذا كانت البيانات في هذا الحقل مختلفة لسبب ما، بالنسبة للمستندات التي لها نفس قيمة المفتاح، فإن بيانات HotelName من مصدر البيانات الذي تمت فهرسته مؤخرا ستكون القيمة المخزنة في الفهرس.

يمكنك استكشاف فهرس البحث المملوء بعد تشغيل البرنامج، باستخدام مستكشف البحث في المدخل.

في مدخل Microsoft Azure، افتح صفحة نظرة عامة على خدمة البحث، وابحث عن فهرس hotel-rooms-sample في قائمة الفهارس.

قائمة فهارس Azure الذكاء الاصطناعي Search

حدد فهرس hotel-rooms-sample في القائمة. سترى واجهة Search Explorer للفهرس. أدخل استعلامًا عن مصطلح مثل "Luxury". يجب أن ترى مستندًا واحدًا على الأقل في النتائج، ويجب أن يُظهر هذا المستند قائمة بكائنات الغرفة في مصفوفة الغرف الخاصة به.

إعادة تعيين وإعادة تشغيل

في المراحل التجريبية المبكرة من التطوير، يتمثل النهج الأكثر عملية لتكرار التصميم في حذف الكائنات من Azure الذكاء الاصطناعي Search والسماح للتعليمات البرمجية بإعادة إنشائها. أسماء الموارد فريدة. يتيح لك حذف كائن إعادة إنشائه باستخدام نفس الاسم.

تتحقق عينة التعليمات البرمجية من الكائنات الموجودة وتحذفها أو تقوم بتحديثها بحيث يمكنك إعادة تشغيل البرنامج.

يمكنك أيضاً استخدام المدخل لحذف الفهارس والمفهرسات ومصادر البيانات.

تنظيف الموارد

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

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

الخطوات التالية

الآن بعد أن أصبحت على دراية بمفهوم استيعاب البيانات من مصادر متعددة، دعنا نلقي نظرة فاحصة على تكوين المفهرس، بدءا من Azure Cosmos DB.