Azure Yapay Zeka Arama'daki sorgular için MongoDB için Azure Cosmos DB'den dizin verileri
Önemli
MongoDB API desteği şu anda ek Kullanım Koşulları kapsamında genel önizleme aşamasındadır. Şu anda SDK desteği yoktur.
Bu makalede, MongoDB için Azure Cosmos DB'den içerik içeri aktaran ve Azure AI Search'te aranabilir hale getiren bir dizin oluşturucu yapılandırmayı öğrenin.
Bu makale , Cosmos DB'ye özgü bilgilerle dizin oluşturucu oluşturma makalesini 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.
Terminoloji kafa karıştırıcı olabileceği için Azure Cosmos DB dizin oluşturma ve Azure AI Search dizin oluşturma işlemlerinin farklı işlemler olduğunu belirtmek gerekir. Azure AI Search'te dizin oluşturma, arama hizmetinizde bir arama dizini oluşturur ve yükler.
Önkoşullar
Senaryo geri bildirimi sağlamak için önizlemeye kaydolun. Bu özelliğe form gönderildikten sonra otomatik olarak erişebilirsiniz.
Azure Cosmos DB hesabı, veritabanı, koleksiyonu ve belgeleri. Daha düşük gecikme süresi ve bant genişliği ücretlerini önlemek için hem Azure AI Search hem de Azure Cosmos DB için aynı bölgeyi kullanın.
Azure Cosmos DB koleksiyonunda Tutarlı olarak ayarlanmış bir otomatik dizin oluşturma ilkesi. Bu, varsayılan yapılandırmadır. Gecikmeli dizin oluşturma önerilmez ve eksik verilere neden olabilir.
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 Cosmos DB Hesap Okuyucusu Rolü izinlerine sahip olduğundan emin olun.
Veri kaynağını, dizini ve dizin oluşturucuyu oluşturmak için bir REST istemcisi.
Sınırlamalar
Bu özelliğin sınırlamaları şunlardır:
Veri kümesini belirtmek için özel sorgular desteklenmez.
Sütun adı
_ts
ayrılmış bir sözcük. Bu alana ihtiyacınız varsa, dizin doldurmaya yönelik alternatif çözümleri göz önünde bulundurun.MongoDB özniteliği
$ref
ayrılmış bir sözcükdür. MongoDB koleksiyonunuzda buna ihtiyacınız varsa, dizin doldurmaya yönelik alternatif çözümleri göz önünde bulundurun.
Bu bağlayıcıya alternatif olarak, senaryonuzda bu gereksinimlerden herhangi biri varsa Push API/SDK'yı kullanabilir veya havuz olarak Azure AI Search dizini olan Azure Data Factory'yi göz önünde bulundurabilirsiniz.
Veri kaynağını tanımlama
Veri kaynağı tanımı, verilerdeki değişiklikleri tanımlamak için dizine eklenecek verileri, kimlik bilgilerini ve ilkeleri belirtir. Veri kaynağı, birden çok dizin oluşturucu tarafından kullanılabilmesi için bağımsız bir kaynak olarak tanımlanır.
Bu çağrı için bir önizleme REST API sürümü belirtin. MongoDB API'sini kullanarak bağlanan bir veri kaynağı oluşturmak için 2020-06-30-preview veya üzerini kullanabilirsiniz. En son önizleme REST API'sini öneririz.
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-05-01-preview Content-Type: application/json api-key: [Search service admin key] { "name": "[my-cosmosdb-mongodb-ds]", "type": "cosmosdb", "credentials": { "connectionString": "AccountEndpoint=https://[cosmos-account-name].documents.azure.com;AccountKey=[cosmos-account-key];Database=[cosmos-database-name];ApiKind=MongoDb;" }, "container": { "name": "[cosmos-db-collection]", "query": null }, "dataChangeDetectionPolicy": { "@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy", "highWaterMarkColumnName": "_ts" }, "dataDeletionDetectionPolicy": null, "encryptionKey": null, "identity": null }
"type" değerini (gerekli) olarak
"cosmosdb"
ayarlayın."Kimlik bilgilerini" bir bağlantı dizesi olarak ayarlayın. Sonraki bölümde desteklenen biçimler açıklanmaktadır.
"kapsayıcı" öğesini koleksiyon olarak ayarlayın. "name" özelliği gereklidir ve dizine eklenecek veritabanı koleksiyonunun kimliğini belirtir. MongoDB için Azure Cosmos DB için "sorgu" desteklenmez.
Veriler geçiciyse ve dizin oluşturucunun sonraki çalıştırmalarda yalnızca yeni ve güncelleştirilmiş öğeleri almasını istiyorsanız "dataChangeDetectionPolicy" değerini ayarlayın.
Kaynak öğe silindiğinde arama belgelerini bir arama dizininden kaldırmak istiyorsanız "dataDeletionDetectionPolicy" değerini ayarlayın.
Desteklenen kimlik bilgileri ve bağlantı dizesi
Dizin oluşturucular aşağıdaki bağlantıları kullanarak bir koleksiyona bağlanabilir. MongoDB API'sini hedefleyen bağlantılar için bağlantı dizesi "ApiKind" eklemeyi unutmayın.
Uç nokta URL'sinde bağlantı noktası numaralarından kaçının. Bağlantı noktası numarasını eklerseniz bağlantı başarısız olur.
Tam erişim bağlantı dizesi |
---|
{ "connectionString" : "AccountEndpoint=https://<Cosmos DB account name>.documents.azure.com;AccountKey=<Cosmos DB auth key>;Database=<Cosmos DB database id>;ApiKind=MongoDb" } |
Sol gezinti bölmesinde Bağlantı Dizesi'ni seçerek Azure portalındaki Azure Cosmos DB hesap sayfasından Cosmos DB kimlik doğrulama anahtarını alabilirsiniz. Birincil Parola'yı kopyaladığınızdan ve Cosmos DB kimlik doğrulama anahtarı değerini onunla değiştirdiğinden emin olun. |
Yönetilen kimlik bağlantı dizesi |
---|
{ "connectionString" : "ResourceId=/subscriptions/<your subscription ID>/resourceGroups/<your resource group name>/providers/Microsoft.DocumentDB/databaseAccounts/<your cosmos db account name>/;(ApiKind=[api-kind];)" } |
Bu bağlantı dizesi bir hesap anahtarı gerektirmez, ancak daha önce bir arama hizmetini yönetilen kimlik kullanarak bağlanacak şekilde yapılandırmış ve Cosmos DB Hesap Okuyucusu Rolü izinleri veren bir rol ataması oluşturmuş olmanız gerekir. Daha fazla bilgi için bkz . Yönetilen kimlik kullanarak Azure Cosmos DB veritabanına dizin oluşturucu bağlantısı kurma. |
Dizine arama alanları ekleme
Arama dizininde, kaynak JSON belgelerini veya özel sorgu projeksiyonunuzun çıkışını kabul etmek için alanlar ekleyin. Arama dizini şemasının kaynak verilerle uyumlu olduğundan emin olun. Azure Cosmos DB'deki içerik için arama dizini şemanız veri kaynağınızdaki Azure Cosmos DB öğelerine karşılık gelir.
Verileri 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-05-01-preview Content-Type: application/json api-key: [Search service admin key] { "name": "mysearchindex", "fields": [{ "name": "doc_id", "type": "Edm.String", "key": true, "retrievable": true, "searchable": false }, { "name": "description", "type": "Edm.String", "filterable": false, "searchable": true, "sortable": false, "facetable": false, "suggestions": true }] }
Belge anahtarı alanı oluşturma ("anahtar": true). MongoDB koleksiyonunu temel alan bir arama dizini için, belge anahtarı "doc_id", "rid" veya benzersiz değerler içeren başka bir dize alanı olabilir. Alan adları ve veri türleri her iki tarafta da aynı olduğu sürece alan eşlemesi gerekmez.
"doc_id", nesne tanımlayıcısı için "_id" temsil eder. Dizinde bir "doc_id" alanı belirtirseniz, dizin oluşturucu bunu nesne tanımlayıcısının değerleriyle doldurur.
"rid", Azure Cosmos DB'deki bir sistem özelliğidir. Dizinde bir "rid" alanı belirtirseniz, dizin oluşturucu bunu "rid" özelliğinin base64 kodlanmış değeriyle doldurur.
Diğer tüm alanlarda, arama alanınız koleksiyonda tanımlanan adla aynı ada sahip olmalıdır.
Daha fazla aranabilir içerik için ek alanlar oluşturun. Ayrıntılar için bkz . Dizin oluşturma.
Eşleme veri türleri
JSON veri türü | Azure AI Search alan türleri |
---|---|
Boole | Edm.Boolean, Edm.String |
Tamsayı gibi görünen sayılar | Edm.Int32, Edm.Int64, Edm.String |
Kayan noktalar gibi görünen sayılar | Edm.Double, Edm.String |
String | Edm.String |
["a", "b", "c"] gibi ilkel tür dizileri | Collection(Edm.String) |
Tarih gibi görünen dizeler | Edm.DateTimeOffset, Edm.String |
{ "type": "Point", "coordinates": [long, lat] } gibi GeoJSON nesneleri | Edm.GeographyPoint |
Diğer JSON nesneleri | Yok |
MongoDB için Azure Cosmos DB dizin oluşturucusunu yapılandırma ve çalıştırma
Dizin ve veri kaynağı oluşturulduktan sonra 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-05-01-preview Content-Type: application/json api-key: [search service admin key] { "name" : "[my-cosmosdb-indexer]", "dataSourceName" : "[my-cosmosdb-mongodb-ds]", "targetIndexName" : "[my-search-index]", "disabled": null, "schedule": null, "parameters": { "batchSize": null, "maxFailedItems": 0, "maxFailedItemsPerBatch": 0, "base64EncodeKeys": false, "configuration": {} }, "fieldMappings": [], "encryptionKey": null }
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=2024-05-01-preview
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":"2022-02-21T00:23:24.957Z",
"endTime":"2022-02-21T00:36:47.752Z",
"errors":[],
"itemsProcessed":1599501,
"itemsFailed":0,
"initialTrackingState":null,
"finalTrackingState":null
},
"executionHistory":
[
{
"status":"success",
"errorMessage":null,
"startTime":"2022-02-21T00:23:24.957Z",
"endTime":"2022-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.
Yeni ve değiştirilmiş belgelerin dizinini oluşturma
Dizin oluşturucu bir arama dizinini tam olarak doldurduktan sonra, sonraki dizin oluşturucu çalıştırmalarının veritabanınızdaki yalnızca yeni ve değiştirilmiş belgeleri artımlı olarak dizinlemesini isteyebilirsiniz.
Artımlı dizin oluşturmayı etkinleştirmek için veri kaynağı tanımınızda "dataChangeDetectionPolicy" özelliğini ayarlayın. Bu özellik, dizin oluşturucuya verilerinizde hangi değişiklik izleme mekanizmasının kullanıldığını bildirir.
Azure Cosmos DB dizin oluşturucuları için desteklenen tek ilke, Azure Cosmos DB tarafından sağlanan kullanım (zaman damgası) özelliğidir HighWaterMarkChangeDetectionPolicy
_ts
.
Aşağıdaki örnekte, değişiklik algılama ilkesine sahip bir veri kaynağı tanımı gösterilmektedir:
"dataChangeDetectionPolicy": {
"@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
" highWaterMarkColumnName": "_ts"
},
Silinen belgelerin dizinini oluşturma
Satırlar koleksiyondan silindiğinde, normalde bu satırları da arama dizininden silmek istersiniz. Veri silme algılama ilkesinin amacı, silinen veri öğelerini verimli bir şekilde tanımlamaktır. Şu anda desteklenen tek ilke Soft Delete
, veri kaynağı tanımında aşağıdaki gibi belirtilen ilkedir (silme işlemi bir tür bayrakla işaretlenir):
"dataDeletionDetectionPolicy"": {
"@odata.type" : "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
"softDeleteColumnName" : "the property that specifies whether a document was deleted",
"softDeleteMarkerValue" : "the value that identifies a document as deleted"
}
Özel sorgu kullanıyorsanız, tarafından başvuruda bulunılan softDeleteColumnName
özelliğin sorgu tarafından yansıtıldığından emin olun.
Aşağıdaki örnek geçici silme ilkesine sahip bir veri kaynağı oluşturur:
POST https://[service name].search.windows.net/datasources?api-version=2024-05-01-preview
Content-Type: application/json
api-key: [Search service admin key]
{
"name": ["my-cosmosdb-mongodb-ds]",
"type": "cosmosdb",
"credentials": {
"connectionString": "AccountEndpoint=https://[cosmos-account-name].documents.azure.com;AccountKey=[cosmos-account-key];Database=[cosmos-database-name];ApiKind=MongoDB"
},
"container": { "name": "[my-cosmos-collection]" },
"dataChangeDetectionPolicy": {
"@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
"highWaterMarkColumnName": "_ts"
},
"dataDeletionDetectionPolicy": {
"@odata.type": "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
"softDeleteColumnName": "isDeleted",
"softDeleteMarkerValue": "true"
}
}
Sonraki adımlar
Artık dizin oluşturucuyu çalıştırmayı, durumu izlemeyi veya dizin oluşturucu yürütmeyi zamanlamayı denetleyebilirsiniz. Aşağıdaki makaleler Azure Cosmos DB'den içerik çeken dizin oluşturucular için geçerlidir: