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
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.
Azure portalında oturum açın, depolama hesabınıza gidin ve hotels adlı bir tablo oluşturun.
Azure Depolama Gezgini yükleyin.
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.
Azure Depolama Gezgini Azure'da oturum açın, aboneliğinizi seçin ve ardından depolama hesabınızı seçin.
Tablolar'ı açın ve otelleri seçin.
Komut çubuğunda İçeri Aktar'ı ve ardından HotelsData_toAzureSearch.csv dosyasını seçin.
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.
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.
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.
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.
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.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.
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 }
"type" değerini (gerekli) olarak
"azuretable"
ayarlayın."Kimlik bilgilerini" bir Azure Depolama bağlantı dizesi olarak ayarlayın. Sonraki bölümde desteklenen biçimler açıklanmaktadır.
"Kapsayıcı"yı tablonun adına ayarlayın.
İ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
000
100
anahtarlara 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.
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 } ] }
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 ise1_123
anahtar değeri olur11_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" } ]
Ş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.
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.
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 }
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" } ]
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
Arama hizmeti sayfasında Arama yönetimi>Dizin Oluşturucuları'nı açın.
Yapılandırma ve yürütme geçmişine erişmek için bir dizin oluşturucu seçin.
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: