فهرسة البيانات من Azure Table Storage

في هذه المقالة، تعرف على كيفية تكوين مفهرس يستورد المحتوى من Azure Table Storage ويجعله قابلا للبحث في Azure الذكاء الاصطناعي Search. المدخلات إلى المفهرس هي الكيانات الخاصة بك، في جدول واحد. الإخراج هو فهرس بحث يحتوي على محتوى قابل للبحث وبيانات تعريف مخزنة في حقول فردية.

تكمل هذه المقالة إنشاء مفهرس بمعلومات خاصة بالفهرسة من Azure Table Storage. ويستخدم واجهات برمجة تطبيقات REST لإظهار سير عمل من ثلاثة أجزاء مشترك بين جميع المفهرسات: إنشاء مصدر بيانات، وإنشاء فهرس، وإنشاء مفهرس. يحدث استخراج البيانات عند إرسال طلب إنشاء مفهرس.

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

  • مساحة تخزين Azure Table‬

  • الجداول التي تحتوي على نص. إذا كان لديك بيانات ثنائية، ففكر في الذكاء الاصطناعي الإثراء لتحليل الصور.

  • قراءة الأذونات على Azure Storage. يتضمن سلسلة الاتصال "الوصول الكامل" مفتاحا يمنح حق الوصول إلى المحتوى، ولكن إذا كنت تستخدم أدوار Azure، فتأكد من أن الهوية المدارة لخدمة البحث لديها أذونات البيانات والقارئ.

  • استخدم عميل REST لصياغة استدعاءات REST مشابهة لتلك الموضحة في هذه المقالة.

تعريف مصدر البيانات

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

  1. إنشاء مصدر بيانات أو تحديثه لتعيين تعريفه:

     POST https://[service name].search.windows.net/datasources?api-version=2023-11-01 
     {
         "name": "my-table-storage-ds",
         "description": null,
         "type": "azuretable",
         "subtype": null,
         "credentials": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<account name>"
         },
         "container": {
            "name": "my-table-in-azure-storage",
            "query": ""
         },
         "dataChangeDetectionPolicy": null,
         "dataDeletionDetectionPolicy": null,
         "encryptionKey": null,
         "identity": null
     }
    
  2. تعيين "type" إلى "azuretable" (مطلوب).

  3. تعيين "بيانات الاعتماد" إلى سلسلة الاتصال تخزين Azure. يصف القسم التالي التنسيقات المدعومة.

  4. تعيين "حاوية" إلى اسم الجدول.

  5. اختياريا، قم بتعيين "استعلام" إلى عامل تصفية على PartitionKey. يعد تعيين هذه الخاصية من أفضل الممارسات التي تحسن الأداء. إذا كان "الاستعلام" فارغا، يقوم المفهرس بتنفيذ فحص جدول كامل، مما قد يؤدي إلى ضعف الأداء إذا كانت الجداول كبيرة.

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

بيانات الاعتماد سلسلة الاتصال المدعومة

يمكن للمفهرسات الاتصال بجدول باستخدام الاتصالات التالية.

سلسلة الاتصال حساب تخزين الوصول الكامل
{ "connectionString" : "DefaultEndpointsProtocol=https;AccountName=<your storage account>;AccountKey=<your account key>;" }
يمكنك الحصول على سلسلة الاتصال من صفحة حساب التخزين في مدخل Microsoft Azure عن طريق تحديد مفاتيح الوصول في جزء التنقل الأيمن. تأكد من تحديد سلسلة الاتصال كامل وليس مجرد مفتاح.
سلسلة الاتصال الهوية المدارة
{ "connectionString" : "ResourceId=/subscriptions/<your subscription ID>/resourceGroups/<your resource group name>/providers/Microsoft.Storage/storageAccounts/<your storage account name>/;" }
لا يتطلب هذا سلسلة الاتصال مفتاح حساب، ولكن يجب أن تكون قد قمت مسبقا بتكوين خدمة بحث للاتصال باستخدام هوية مدارة.
توقيع الوصول المشترك لحساب التخزين** (SAS) سلسلة الاتصال
{ "connectionString" : "BlobEndpoint=https://<your account>.blob.core.windows.net/;SharedAccessSignature=?sv=2016-05-31&sig=<the signature>&spr=https&se=<the validity end time>&srt=co&ss=b&sp=rl;" }
يجب أن يكون لدى SAS أذونات القائمة والقراءة على الجداول والكيانات.
توقيع الوصول المشترك للحاوية
{ "connectionString" : "ContainerSharedAccessUri=https://<your storage account>.blob.core.windows.net/<container name>?sv=2016-05-31&sr=c&sig=<the signature>&se=<the validity end time>&sp=rl;" }
يجب أن يكون لدى SAS أذونات القائمة والقراءة على الحاوية. لمزيد من المعلومات، راجع استخدام توقيعات الوصول المشترك.

إشعار

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

القسم لتحسين الأداء

بشكل افتراضي، يستخدم Azure الذكاء الاصطناعي Search عامل تصفية الاستعلام الداخلي التالي لتتبع كيانات المصدر التي تم تحديثها منذ التشغيل الأخير: Timestamp >= HighWaterMarkValue. نظرا لأن جداول Azure لا تحتوي على فهرس ثانوي في Timestamp الحقل، يتطلب هذا النوع من الاستعلام فحصا كاملا للجداول وبالتالي يكون بطيئا للجداول الكبيرة.

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

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

    على سبيل المثال، لإنشاء مصدر بيانات لمعالجة نطاق قسم بمفاتيح من 000 إلى 100، استخدم استعلاما مثل هذا: "container" : { "name" : "my-table", "query" : "PartitionKey ge '000' and PartitionKey lt '100' " }

  • إذا تم تقسيم بياناتك حسب الوقت (على سبيل المثال، إذا قمت بإنشاء قسم جديد كل يوم أو أسبوع)، ففكر في النهج التالي:

    • في تعريف مصدر البيانات، حدد استعلاما مشابها للمثال التالي: (PartitionKey ge <TimeStamp>) and (other filters).

    • مراقبة تقدم المفهرس باستخدام Get Indexer Status API، وتحديث <TimeStamp> حالة الاستعلام بشكل دوري استنادا إلى أحدث قيمة ناجحة ذات علامة مائية عالية.

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

إضافة حقول بحث إلى فهرس

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

  1. إنشاء فهرس أو تحديثه لتعريف حقول البحث التي ستخزن المحتوى من الكيانات:

    POST https://[service name].search.windows.net/indexes?api-version=2023-11-01 
    {
      "name" : "my-search-index",
      "fields": [
        { "name": "Key", "type": "Edm.String", "key": true, "searchable": false },
        { "name": "SomeColumnInMyTable", "type": "Edm.String", "searchable": true }
      ]
    }
    
  2. إنشاء حقل مفتاح مستند ("المفتاح": صحيح)، ولكن اسمح للمفهرس بملئه تلقائيا. يقوم مفهرس الجدول بتعبئة حقل المفتاح بقسم متسلسل ومفاتيح صف من الجدول. على سبيل المثال، إذا كان PartitionKey للصف هو 1 وRowKey هو 1_123، فإن قيمة المفتاح هي 11_123. إذا كان مفتاح القسم خاليا، يتم استخدام مفتاح الصف فقط.

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

    إذا كنت تستخدم واجهات برمجة تطبيقات REST وتريد تعيينات الحقول الضمنية، فبادر بإنشاء حقل مفتاح المستند "مفتاح" وسمه في تعريف فهرس البحث كما هو موضح في الخطوة السابقة ({ "name": "Key", "type": "Edm.String", "key": true, "searchable": false }). يقوم المفهرس بملء حقل المفتاح تلقائيا، دون الحاجة إلى تعيينات الحقول.

    إذا كنت لا تريد حقلا باسم "المفتاح" في فهرس البحث، أضف تعيين حقل صريح في تعريف المفهرس باسم الحقل الذي تريده، فعين الحقل المصدر إلى "مفتاح":

     "fieldMappings" : [
       {
         "sourceFieldName" : "Key",
         "targetFieldName" : "MyDocumentKeyFieldName"
       }
    ]
    
  3. أضف الآن أي حقول كيان أخرى تريدها في الفهرس. على سبيل المثال، إذا كان الكيان يبدو مثل المثال التالي، يجب أن يحتوي فهرس البحث الخاص بك على حقول ل HotelName والوصف والفئة لتلقي هذه القيم.

    لقطة شاشة لمحتوى الجدول في مستعرض التخزين.

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

تكوين مفهرس الجدول وتشغيله

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

  1. إنشاء مفهرس أو تحديثه عن طريق تسميته والإشارة إلى مصدر البيانات والفهرس الهدف:

    POST https://[service name].search.windows.net/indexers?api-version=2023-11-01
    {
        "name" : "my-table-indexer",
        "dataSourceName" : "my-table-storage-ds",
        "targetIndexName" : "my-search-index",
        "disabled": null,
        "schedule": null,
        "parameters" : {
            "batchSize" : null,
            "maxFailedItems" : null,
            "maxFailedItemsPerBatch" : null,
            "base64EncodeKeys" : null,
            "configuration" : { }
        },
        "fieldMappings" : [ ],
        "cache": null,
        "encryptionKey": null
    }
    
  2. حدد تعيينات الحقول إذا كانت هناك اختلافات في اسم الحقل أو نوعه، أو إذا كنت بحاجة إلى إصدارات متعددة من حقل مصدر في فهرس البحث. الحقل Target هو اسم الحقل في فهرس البحث.

     "fieldMappings" : [
       {
         "sourceFieldName" : "Description",
         "targetFieldName" : "HotelDescription"
       }
    ]
    
  3. راجع إنشاء مفهرس للحصول على مزيد من المعلومات حول الخصائص الأخرى.

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

التحقق من حالة المفهرس

لمراقبة حالة المفهرس ومحفوظات التنفيذ، أرسل طلب الحصول على حالة المفهرس:

GET https://myservice.search.windows.net/indexers/myindexer/status?api-version=2023-11-01
  Content-Type: application/json  
  api-key: [admin key]

تتضمن الاستجابة الحالة وعدد العناصر التي تمت معالجتها. يجب أن يبدو مشابها للمثال التالي:

    {
        "status":"running",
        "lastResult": {
            "status":"success",
            "errorMessage":null,
            "startTime":"2023-02-21T00:23:24.957Z",
            "endTime":"2023-02-21T00:36:47.752Z",
            "errors":[],
            "itemsProcessed":1599501,
            "itemsFailed":0,
            "initialTrackingState":null,
            "finalTrackingState":null
        },
        "executionHistory":
        [
            {
                "status":"success",
                "errorMessage":null,
                "startTime":"2023-02-21T00:23:24.957Z",
                "endTime":"2023-02-21T00:36:47.752Z",
                "errors":[],
                "itemsProcessed":1599501,
                "itemsFailed":0,
                "initialTrackingState":null,
                "finalTrackingState":null
            },
            ... earlier history items
        ]
    }

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

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

تعرف على المزيد حول كيفية تشغيل المفهرس أو مراقبة الحالة أو جدولة تنفيذ المفهرس. تنطبق المقالات التالية على المفهرسات التي تسحب المحتوى من Azure Storage: