Azure Tablo Depolama verilerini dizine alın

Bu makalede, Azure Tablo Depolama içeriği içeri aktaran ve Azure AI Search'te aranabilir hale getiren bir dizin oluşturucu yapılandırmayı öğrenin. Dizin oluşturucuya girişler, tek bir tablodaki varlıklarınızdır. Çıktı, aranabilir içerik ve meta verilerin tek tek alanlarda depolandığı bir arama dizinidir.

Bu makale, Azure Tablo Depolama'nden dizin oluşturmaya özgü bilgilerle dizin oluşturucu oluşturma işlemini tamamlar. Rest API'lerini kullanarak tüm dizin oluşturucular için ortak olan üç parçalı bir iş akışını gösterir: veri kaynağı oluşturma, dizin oluşturma, dizin oluşturucu oluşturma. Dizin Oluşturucu Oluştur isteğini gönderdiğinizde veri ayıklama gerçekleşir.

Önkoşullar

  • Azure Tablo Depolaması

  • Metin içeren tablolar. İkili verileriniz varsa görüntü analizi için yapay zeka zenginleştirmesini göz önünde bulundurun.

  • Azure Depolama'da okuma izinleri. "Tam erişim" bağlantı dizesi içeriğe erişim sağlayan bir anahtar içerir, ancak Azure rolleri kullanıyorsanız arama hizmeti yönetilen kimliğinin Veri ve Okuyucu izinlerine sahip olduğundan emin olun.

  • REST çağrılarını bu makalede gösterilene benzer şekilde formüle etmek için REST istemcisini kullanın.

Veri kaynağını tanımlama

Veri kaynağı tanımı, değişiklik algılama için dizine eklenecek kaynak verileri, kimlik bilgilerini ve ilkeleri belirtir. Veri kaynağı, birden çok dizin oluşturucu tarafından kullanılabilen bağımsız bir kaynaktır.

  1. Tanımını ayarlamak için bir veri kaynağı oluşturun veya güncelleştirin:

     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" değerini (gerekli) olarak "azuretable" ayarlayın.

  3. "Kimlik bilgilerini" bir Azure Depolama bağlantı dizesi olarak ayarlayın. Sonraki bölümde desteklenen biçimler açıklanmaktadır.

  4. "Kapsayıcı"yı tablonun adına ayarlayın.

  5. İsteğe bağlı olarak, "query" değerini PartitionKey'de bir filtre olarak ayarlayın. Bu özelliğin ayarlanması, performansı artıran en iyi yöntemdir. "Sorgu" null ise, dizin oluşturucu tam tablo taraması yürütür ve bu da tablolar büyükse düşük performansa neden olabilir.

Kaynak belge silinmek üzere işaretlendiğinde dizin oluşturucunun bir arama belgesini silmesini istiyorsanız, veri kaynağı tanımı geçici silme ilkeleri de içerebilir.

Desteklenen kimlik bilgileri ve bağlantı dizesi

Dizin oluşturucular aşağıdaki bağlantıları kullanarak bir tabloya bağlanabilir.

Tam erişimli depolama hesabı bağlantı dizesi
{ "connectionString" : "DefaultEndpointsProtocol=https;AccountName=<your storage account>;AccountKey=<your account key>;" }
Sol gezinti bölmesinde Erişim anahtarları'nı seçerek Azure portalındaki Depolama hesabı sayfasından bağlantı dizesi alabilirsiniz. Yalnızca bir anahtar değil tam bir bağlantı dizesi seçtiğinizden emin olun.
Yönetilen kimlik bağlantı dizesi
{ "connectionString" : "ResourceId=/subscriptions/<your subscription ID>/resourceGroups/<your resource group name>/providers/Microsoft.Storage/storageAccounts/<your storage account name>/;" }
Bu bağlantı dizesi hesap anahtarı gerektirmez, ancak daha önce yönetilen kimlik kullanarak bağlanmak için bir arama hizmeti yapılandırmış olmanız gerekir.
Depolama hesabı paylaşılan erişim imzası** (SAS) bağlantı dizesi
{ "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,tablolarda ve varlıklarda liste ve okuma izinlerine sahip olmalıdır.
Kapsayıcı paylaşılan erişim imzası
{ "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,kapsayıcı üzerinde liste ve okuma izinlerine sahip olmalıdır. Daha fazla bilgi için bkz . Paylaşılan Erişim İmzalarını Kullanma.

Not

SAS kimlik bilgilerini kullanıyorsanız, sürelerinin dolmasını önlemek için veri kaynağı kimlik bilgilerini düzenli aralıklarla yenilenen imzalarla güncelleştirmeniz gerekir. SAS kimlik bilgilerinin süresi dolduğunda, dizin oluşturucu "bağlantı dizesi sağlanan kimlik bilgileri geçersiz veya süresi dolmuş" gibi bir hata iletisiyle başarısız olur.

Geliştirilmiş performans için bölüm

Varsayılan olarak, Azure AI Search son çalıştırmadan bu yana hangi kaynak varlıkların güncelleştirildiğini izlemek için aşağıdaki iç sorgu filtresini kullanır: Timestamp >= HighWaterMarkValue. Azure tablolarında alanda ikincil dizin Timestamp olmadığından, bu sorgu türü tam tablo taraması gerektirir ve bu nedenle büyük tablolar için yavaştır.

Tam taramayı önlemek için, her dizin oluşturucu işinin kapsamını daraltmak için tablo bölümlerini kullanabilirsiniz.

  • Verileriniz doğal olarak birkaç bölüm aralığına bölünebiliyorsa, her bölüm aralığı için bir veri kaynağı ve buna karşılık gelen bir dizin oluşturucu oluşturun. Her dizin oluşturucu artık yalnızca belirli bir bölüm aralığını işlemek zorunda olduğundan sorgu performansı daha iyi olur. Dizine alınması gereken verilerin az sayıda sabit bölümü varsa, daha da iyisi: her dizin oluşturucu yalnızca bir bölüm taraması yapar.

    Örneğin, 'den 000100anahtarlara sahip bir bölüm aralığını işlemek üzere bir veri kaynağı oluşturmak için aşağıdaki gibi bir sorgu kullanın: "container" : { "name" : "my-table", "query" : "PartitionKey ge '000' and PartitionKey lt '100' " }

  • Verileriniz zamana göre bölümlenmişse (örneğin, her gün veya hafta yeni bir bölüm oluşturursanız), aşağıdaki yaklaşımı göz önünde bulundurun:

    • Veri kaynağı tanımında aşağıdaki örneğe benzer bir sorgu belirtin: (PartitionKey ge <TimeStamp>) and (other filters).

    • Dizin Oluşturucu Durumunu Al API'sini kullanarak dizin oluşturucunun ilerleme durumunu izleyin ve sorgunun koşulunu en son başarılı yüksek su işareti değerine göre düzenli aralıklarla güncelleştirin<TimeStamp>.

    • Bu yaklaşımla, tam bir reindex tetiklemeniz gerekiyorsa dizin oluşturucuyu sıfırlamaya ek olarak veri kaynağı sorgusunu sıfırlayın.

Dizine arama alanları ekleme

Arama dizininde, tablo varlıklarınızın içeriğini ve meta verilerini kabul etmek için alanlar ekleyin.

  1. Varlıkların içeriğini depolayacak arama alanlarını tanımlamak için bir dizin oluşturun veya güncelleştirin:

    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. Belge anahtarı alanı ("anahtar": true) oluşturun, ancak dizin oluşturucunun bunu otomatik olarak doldurmasına izin verin. Tablo dizin oluşturucu, anahtar alanını tablodan birleştirilmiş bölüm ve satır anahtarlarıyla doldurur. Örneğin, bir satırın PartitionKey 1 değeri ve RowKey değeri ise 1_123anahtar değeri olur 11_123. Bölüm anahtarı null ise yalnızca satır anahtarı kullanılır.

    Dizini oluşturmak için Verileri içeri aktarma sihirbazını kullanıyorsanız, portal arama dizini için bir "Anahtar" alanı çıkartır ve kaynak ve hedef alanları bağlamak için örtük bir alan eşlemesi kullanır. Alanı kendiniz eklemeniz gerekmez ve alan eşlemesi ayarlamanız gerekmez.

    REST API'lerini kullanıyorsanız ve örtük alan eşlemeleri istiyorsanız, önceki adımda ({ "name": "Key", "type": "Edm.String", "key": true, "searchable": false }) gösterildiği gibi arama dizini tanımında belge anahtarı alanını "Anahtar" oluşturun ve adlandırın. Dizin oluşturucu Anahtar alanını otomatik olarak doldurur ve alan eşlemesi gerekmez.

    Arama dizininizde "Anahtar" adlı bir alan istemiyorsanız, dizin oluşturucu tanımına istediğiniz alan adıyla açık bir alan eşlemesi ekleyin ve kaynak alanı "Anahtar" olarak ayarlayın:

     "fieldMappings" : [
       {
         "sourceFieldName" : "Key",
         "targetFieldName" : "MyDocumentKeyFieldName"
       }
    ]
    
  3. Şimdi dizininizde olmasını istediğiniz diğer varlık alanlarını ekleyin. Örneğin, bir varlık aşağıdaki örneğe benziyorsa, arama dizininizde bu değerleri almak için HotelName, Description ve Category alanlarının olması gerekir.

    Depolama tarayıcıdaki tablo içeriğinin ekran görüntüsü.

    Aynı adların ve uyumlu veri türlerinin kullanılması, alan eşlemeleri gereksinimini en aza indirir. Adlar ve türler aynı olduğunda, dizin oluşturucu veri yolunu otomatik olarak belirleyebilir.

Tablo dizin oluşturucusunu yapılandırma ve çalıştırma

Bir dizininiz ve veri kaynağınız olduğunda, dizin oluşturucuyu oluşturmaya hazır olursunuz. Dizin oluşturucu yapılandırması, çalışma zamanı davranışlarını denetleen girişleri, parametreleri ve özellikleri belirtir.

  1. Dizin oluşturucuya bir ad verip veri kaynağına ve hedef dizine başvurarak dizin oluşturucu oluşturun veya güncelleştirin:

    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. Alan adında veya türünde farklılıklar varsa veya arama dizininde bir kaynak alanın birden çok sürümüne ihtiyacınız varsa alan eşlemelerini belirtin. Hedef alanı, arama dizinindeki alanın adıdır.

     "fieldMappings" : [
       {
         "sourceFieldName" : "Description",
         "targetFieldName" : "HotelDescription"
       }
    ]
    
  3. Diğer özellikler hakkında daha fazla bilgi için bkz . Dizin oluşturucu oluşturma.

Dizin oluşturucu oluşturulduğunda otomatik olarak çalışır. "Devre dışı" ayarını true olarak ayarlayarak bunu önleyebilirsiniz. Dizin oluşturucu yürütmesini denetlemek için isteğe bağlı olarak bir dizin oluşturucu çalıştırın veya zamanlamaya yerleştirin.

Dizin oluşturucu durumunu denetleme

Dizin oluşturucu durumunu ve yürütme geçmişini izlemek için Dizin Oluşturucu Durumunu Al isteği gönderin:

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

Yanıt, durumu ve işlenen öğe sayısını içerir. Aşağıdaki örneğe benzer görünmelidir:

    {
        "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
        ]
    }

Yürütme geçmişi, en son tamamlanan yürütmelerin en son 50'sini içerir ve en son yürütme önce gelecek şekilde ters kronolojik sırada sıralanır.

Sonraki adımlar

Dizin oluşturucuyu çalıştırma, durumu izleme veya dizin oluşturucu yürütmeyi zamanlama hakkında daha fazla bilgi edinin. Aşağıdaki makaleler Azure Depolama'dan içerik çeken dizin oluşturucular için geçerlidir: