Aracılığıyla paylaş


Azure Tablo Depolama'dan dizin verileri

Bu makalede, Azure Tablo Depolama'dan içerik 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'dan dizin oluşturmaya özgü bilgilerle dizin oluşturucu oluşturma işlemini tamamlar. Azure portalını ve 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 Depolama Tablosu Veri Okuyucusu izinlerine sahip olduğundan emin olun.

Bu makaledeki örnekleri inceleyebilmek için Azure portalına veya REST istemcisine ihtiyacınız vardır. Azure portalı kullanıyorsanız tüm genel ağlara erişimin etkinleştirildiğinden emin olun. Azure Tablo dizin oluşturucu oluşturmaya yönelik diğer yaklaşımlar arasında Azure SDK'ları bulunur.

Örnek verilerle deneme

Test amacıyla Azure Depolama'da tablo oluşturmak için bu yönergeleri kullanın.

  1. Azure portalında oturum açın, depolama hesabınıza gidin ve hotels adlı bir tablo oluşturun.

  2. Azure Depolama Gezgini yükleyin.

  3. GitHub'dan HotelsData_toAzureSearch.csv indirin. Bu dosya, yerleşik oteller örnek veri kümesinin bir alt kümesidir. Oda koleksiyonunu, çevrilmiş açıklamaları ve coğrafya koordinatlarını atlar.

  4. Azure Depolama Gezgini Azure'da oturum açın, aboneliğinizi seçin ve ardından depolama hesabınızı seçin.

  5. Tablolar'ı açın ve otelleri seçin.

  6. Komut çubuğunda İçeri Aktar'ı ve ardından HotelsData_toAzureSearch.csv dosyasını seçin.

  7. Varsayılanları kabul edin. Verileri yüklemek için İçeri Aktar'ı seçin.

Tabloda otomatik olarak oluşturulan partitionKey, rowKey ve zaman damgasına sahip 50 otel kaydınız olmalıdır. Bu içeriği artık Azure portalında, REST istemcisinde veya Azure SDK'da dizin oluşturmak için kullanabilirsiniz.

Açıklama alanı en ayrıntılı içeriği sağlar. Tam metin araması ve isteğe bağlı vektör sorguları için bu alanı hedeflemeniz gerekir.

Azure portal’ı kullanma

SQL veritabanı tablosundan veya görünümünden dizin oluşturmayı otomatikleştirmek için Verileri içeri aktarma sihirbazını veya Verileri içeri aktarma ve vektörleştirme sihirbazını kullanabilirsiniz. Veri kaynağı yapılandırması her iki sihirbaz için de benzerdir.

  1. Sihirbazı başlatın.

  2. Verilerinize bağlanın sayfasında, veri kaynağı türünün Azure Tablo Depolama olduğunu veya veri seçim alanlarının tablo istemde bulunduğunu seçin veya doğrulayın.

    Veri kaynağı adı, Azure AI Search'teki veri kaynağı bağlantı nesnesine başvurur. Vektör sihirbazını kullanırsanız, veri kaynağı adınız sihirbaz iş akışının sonunda belirtilen özel bir ön ek kullanılarak otomatik olarak oluşturulur.

  3. Depolama hesabını ve tablo adını belirtin. Sorgu isteğe bağlıdır. İçeri aktarmak istediğiniz belirli sütunlarınız varsa kullanışlıdır.

  4. Yönetilen kimlik veya yerleşik API anahtarı gibi bir kimlik doğrulama yöntemi belirtin. Yönetilen kimlik bağlantısı belirtmezseniz Azure portalı anahtarı kullanır.

    Azure AI Search'i yönetilen kimlik kullanacak şekilde yapılandırır ve Azure Depolama'da kimliğe Okuyucu ve Veri Erişimi izinleri veren bir rol ataması oluşturursanız, dizin oluşturucunuz Microsoft Entra Id ve rollerini kullanarak tablo depolamaya bağlanabilir.

  5. Verileri içeri aktarma ve vektörleştirme sihirbazı için silme algılama seçeneklerini belirtebilirsiniz.

    Silme algılama, tabloda geçici silme bayrağı olarak kullanılabilecek önceden var olan bir alanınız olmasını gerektirir. Bir Boole alanı olmalıdır (isDeleted olarak adlandırabilirsiniz). Geçici silme değeri olarak belirtin true . Arama dizininde, alınabilir ve filtrelenebilir olarak ayarlanmış IsDeleted adlı ilgili bir arama alanı ekleyin.

  6. Sihirbazı tamamlamak için kalan adımlarla devam edin:

REST API’leri kullanma

Bu bölümde veri kaynağı, dizin ve dizin oluşturucu oluşturan REST API çağrıları gösterilmektedir.

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=2024-07-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=2024-07-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, Azure 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ısında 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=2024-07-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,
            "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 Azure portalında dizin oluşturucu yürütme geçmişini denetleyin veya Dizin Oluşturucu Durumunu Al RESTIRequest gönderin

  1. Arama hizmeti sayfasında Arama yönetimi>Dizin Oluşturucuları'nı açın.

  2. Yapılandırma ve yürütme geçmişine erişmek için bir dizin oluşturucu seçin.

  3. Ayrıntıları, uyarıları ve hataları görüntülemek için belirli bir dizin oluşturucu işi seçin.

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: