Azure 'da Dizin Oluşturucu kullanarak Cosmos DB verilerini dizin oluşturma Bilişsel AramaHow to index Cosmos DB data using an indexer in Azure Cognitive Search

Önemli

SQL API 'SI genel kullanıma sunulmuştur.SQL API is generally available. MongoDB API 'SI, Gremlin API ve Cassandra API desteği şu anda genel önizlemededir.MongoDB API, Gremlin API, and Cassandra API support are currently in public preview. Önizleme işlevselliği, bir hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yükleri için önerilmez.Preview functionality is provided without a service level agreement, and is not recommended for production workloads. Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.For more information, see Supplemental Terms of Use for Microsoft Azure Previews. Bu formudoldurarak önizlemelere erişim isteğinde bulabilirsiniz.You can request access to the previews by filling out this form. REST API sürüm 2019-05-06-önizleme , Önizleme özellikleri sağlar.The REST API version 2019-05-06-Preview provides preview features. Şu anda sınırlı sayıda portal desteği var ve .NET SDK desteği yok.There is currently limited portal support, and no .NET SDK support.

Bu makalede, içerik ayıklamak ve Azure Bilişsel Arama 'de aranabilir hale getirmek için bir Azure Cosmos DB dizin oluşturucunun nasıl yapılandırılacağı gösterilmektedir.This article shows you how to configure an Azure Cosmos DB indexer to extract content and make it searchable in Azure Cognitive Search. Bu iş akışı bir Azure Bilişsel Arama dizini oluşturur ve Azure Cosmos DB ayıklanan varolan metinle yükler.This workflow creates an Azure Cognitive Search index and loads it with existing text extracted from Azure Cosmos DB.

Terminoloji kafa karıştırıcı olabileceğinden, Azure Cosmos DB Dizin oluşturma ve Azure bilişsel arama dizin oluşturma 'nın her bir hizmete özgü ayrı işlemler olduğunu belirten bir değer vardır.Because terminology can be confusing, it's worth noting that Azure Cosmos DB indexing and Azure Cognitive Search indexing are distinct operations, unique to each service. Azure Bilişsel Arama Dizin oluşturmaya başlamadan önce Azure Cosmos DB veritabanınız zaten var olmalı ve veri içermeli.Before you start Azure Cognitive Search indexing, your Azure Cosmos DB database must already exist and contain data.

Azure Bilişsel Arama 'deki Cosmos DB Dizin Oluşturucu, farklı protokollerle erişilen Azure Cosmos DB öğelerine gezinebiliyor.The Cosmos DB indexer in Azure Cognitive Search can crawl Azure Cosmos DB items accessed through different protocols.

Not

Azure Bilişsel Arama 'de desteklendiğini görmek isterseniz, tablo API'si Için Kullanıcı sesine oy verebilirsiniz.You can cast a vote on User Voice for the Table API if you'd like to see it supported in Azure Cognitive Search.

Portalı kullanmaUse the portal

Not

Portal Şu anda SQL API ve MongoDB API 'sini (Önizleme) desteklemektedir.The portal currently supports the SQL API and MongoDB API (preview).

Azure Cosmos DB öğelerinin dizinlenmesini sağlamak için en kolay yöntem, Azure Portalbir sihirbaz kullanmaktır.The easiest method for indexing Azure Cosmos DB items is to use a wizard in the Azure portal. Azure bilişsel arama verileri örnekleyerek ve meta verileri okuyarak, varsayılan bir dizin oluşturabilir, kaynak alanları hedef dizin alanlarıyla eşleyebilir ve dizini tek bir işlemde yükleyebilir.By sampling data and reading metadata on the container, the Import data wizard in Azure Cognitive Search can create a default index, map source fields to target index fields, and load the index in a single operation. Kaynak verilerin boyutuna ve karmaşıklığına bağlı olarak, dakikalar içinde işlemsel bir tam metin arama dizinine sahip olabilirsiniz.Depending on the size and complexity of source data, you could have an operational full text search index in minutes.

Aynı bölgede, tercihen Azure Bilişsel Arama ve Azure Cosmos DB için aynı Azure aboneliğini kullanmanızı öneririz.We recommend using the same Azure subscription for both Azure Cognitive Search and Azure Cosmos DB, preferably in the same region.

1-kaynak verileri hazırlama1 - Prepare source data

SQL API, MongoDB API 'SI (Önizleme) veya Gremlin API (Önizleme) ile eşlenmiş bir Cosmos DB hesabınız Azure Cosmos DB, veritabanı ve veritabanındaki içerikler olmalıdır.You should have a Cosmos DB account, an Azure Cosmos DB database mapped to the SQL API, MongoDB API (preview), or Gremlin API (preview), and content in the database.

Cosmos DB veritabanınızın veri içerdiğinden emin olun.Make sure your Cosmos DB database contains data. Veri alma Sihirbazı meta verileri okur ve bir dizin şemasını çıkarması için veri örnekleme gerçekleştirir, ancak Ayrıca Cosmos DB verileri yükler.The Import data wizard reads metadata and performs data sampling to infer an index schema, but it also loads data from Cosmos DB. Veriler eksikse, sihirbaz bu hatayla biter "veri kaynağından Dizin şeması tespit etme hatası: DataSource ' emptycollection ' hiçbir veri döndürdüğünden bir prototip dizini derlenemedi.If the data is missing, the wizard stops with this error "Error detecting index schema from data source: Could not build a prototype index because datasource 'emptycollection' returned no data".

2-veri alma Sihirbazı 'nı başlatma2 - Start Import data wizard

Sihirbazı Azure Bilişsel Arama hizmeti sayfasında komut çubuğundan başlatabilir veya Cosmos db SQL API 'sine bağlanıyorsanız, Cosmos DB hesabınızın solundaki ayarlar bölümünde Azure bilişsel arama Ekle ' ye tıklayabilirsiniz Gezinti bölmesi.You can start the wizard from the command bar in the Azure Cognitive Search service page, or if you're connecting to Cosmos DB SQL API you can click Add Azure Cognitive Search in the Settings section of your Cosmos DB account's left navigation pane.

Portalda verileri içeri aktar komutuImport data command in portal

3-veri kaynağını ayarlama3 - Set the data source

Veri kaynağı sayfasında, kaynak Cosmos DB, aşağıdaki belirtimlerle birlikte olmalıdır:In the data source page, the source must be Cosmos DB, with the following specifications:

  • Ad , veri kaynağı nesnesinin adıdır.Name is the name of the data source object. Oluşturulduktan sonra diğer iş yükleri için bunu seçebilirsiniz.Once created, you can choose it for other workloads.

  • Cosmos DB hesabın , bir AccountEndpoint ve bir AccountKeyile Cosmos DB birincil veya ikincil bağlantı dizesi olması gerekir.Cosmos DB account should be the primary or secondary connection string from Cosmos DB, with an AccountEndpoint and an AccountKey. MongoDB koleksiyonları için, bağlantı dizesinin sonuna Apikind = MongoDb ekleyin ve bağlantı dizesinden noktalı virgülle ayırın.For MongoDB collections, add ApiKind=MongoDb to the end of the connection string and separate it from the connection string with a semicolon. Gremlin API ve Cassandra API için REST APIyönergelerini kullanın.For the Gremlin API and Cassandra API, use the instructions for the REST API.

  • Veritabanı , hesaptaki mevcut bir veritabanıdır.Database is an existing database from the account.

  • Koleksiyon bir belge kapsayıcısıdır.Collection is a container of documents. Almanın başarılı olması için belgeler mevcut olmalıdır.Documents must exist in order for import to succeed.

  • Tüm belgeleri istiyorsanız sorgu boş olabilir, aksi takdirde bir belge alt kümesi seçen bir sorgu girebilirsiniz.Query can be blank if you want all documents, otherwise you can input a query that selects a document subset. Sorgu yalnızca SQL API 'si için kullanılabilir.Query is only available for the SQL API.

    Cosmos DB veri kaynağı tanımıCosmos DB data source definition

4-sihirbazdaki "zenginleştirme içerik" sayfasını atlayın4 - Skip the "Enrich content" page in the wizard

Bilişsel yetenekler (veya zenginleştirme) eklemek bir içeri aktarma gereksinimi değildir.Adding cognitive skills (or enrichment) is not an import requirement. Dizin oluşturma işlem hattınızda AI zenginleştirme eklemek için özel bir ihtiyacınız yoksa bu adımı atlamanız gerekir.Unless you have a specific need to add AI enrichment to your indexing pipeline, you should skip this step.

Adımı atlamak için, "Ileri" ve "atla" için sayfanın altındaki mavi düğmelere tıklayın.To skip the step, click the blue buttons at the bottom of the page for "Next" and "Skip".

5-dizin özniteliklerini ayarla5 - Set index attributes

Dizin sayfasında, bir veri türü ve Dizin özniteliklerini ayarlamaya yönelik bir dizi onay kutusu içeren alanların listesini görmeniz gerekir.In the Index page, you should see a list of fields with a data type and a series of checkboxes for setting index attributes. Sihirbaz meta verileri temel alan ve kaynak verileri örnekleyerek bir alanlar listesi oluşturabilir.The wizard can generate a fields list based on metadata and by sampling the source data.

Öznitelik sütununun en üstündeki onay kutusuna tıklayarak öznitelikleri toplu olarak seçebilirsiniz.You can bulk-select attributes by clicking the checkbox at the top of an attribute column. Bir istemci uygulamasına döndürülmesi gereken her alan için alınabilir ve aranabilir ' i seçin ve tam metin arama işlemesine tabidir.Choose Retrievable and Searchable for every field that should be returned to a client app and subject to full text search processing. Tamsayıların tam metin veya benzer aranabilir olduğunu fark edeceksiniz (sayılar tam olarak değerlendirilir ve genellikle filtrelerdeki yararlı olur).You'll notice that integers are not full text or fuzzy searchable (numbers are evaluated verbatim and are often useful in filters).

Daha fazla bilgi için dizin özniteliklerinin ve dil çözümleyicilerinin açıklamasını gözden geçirin.Review the description of index attributes and language analyzers for more information.

Seçimlerinizi gözden geçirmek için bir dakikanızı ayırın.Take a moment to review your selections. Sihirbazı çalıştırdığınızda fiziksel veri yapıları oluşturulur ve tüm nesneleri bırakıp yeniden oluşturmadan bu alanları düzenleyemezsiniz.Once you run the wizard, physical data structures are created and you won't be able to edit these fields without dropping and recreating all objects.

Cosmos DB Dizin tanımıCosmos DB index definition

6-Dizin Oluşturucu oluştur6 - Create indexer

Tam olarak belirtilen sihirbaz, arama hizmetinizde üç ayrı nesne oluşturur.Fully specified, the wizard creates three distinct objects in your search service. Veri kaynağı nesnesi ve dizin nesnesi, Azure Bilişsel Arama hizmetinize adlandırılmış kaynaklar olarak kaydedilir.A data source object and index object are saved as named resources in your Azure Cognitive Search service. Son adım bir Dizin Oluşturucu nesnesi oluşturur.The last step creates an indexer object. Dizin oluşturucunun adlandırılması, aynı sihirbaz dizisinde oluşturulan dizin ve veri kaynağı nesnesinden bağımsız olarak zamanlayabilir ve yönetebileceğiniz tek başına bir kaynak olarak var olmasına izin verir.Naming the indexer allows it to exist as a standalone resource, which you can schedule and manage independently of the index and data source object, created in the same wizard sequence.

Dizin oluşturucular hakkında bilginiz yoksa, Dizin Oluşturucu , aranabilir içerik için bir dış veri kaynağında gezinir ve Azure bilişsel arama bir kaynaktır.If you are not familiar with indexers, an indexer is a resource in Azure Cognitive Search that crawls an external data source for searchable content. Veri alma Sihirbazı 'nın çıktısı, Cosmos DB veri kaynağınıza gezinir, aranabilir içeriği ayıklar ve Azure bilişsel arama bir dizine içeri aktarır.The output of the Import data wizard is an indexer that crawls your Cosmos DB data source, extracts searchable content, and imports it into an index on Azure Cognitive Search.

Aşağıdaki ekran görüntüsünde varsayılan dizin oluşturucu yapılandırması gösterilmektedir.The following screenshot shows the default indexer configuration. Dizin Oluşturucuyu bir kez çalıştırmak istiyorsanız bir kez geçiş yapabilirsiniz.You can switch to Once if you want to run the indexer one time. Sihirbazı çalıştırmak ve tüm nesneleri oluşturmak için Gönder ' e tıklayın.Click Submit to run the wizard and create all objects. Dizin oluşturma anında yapılır.Indexing commences immediately.

Cosmos DB Dizin Oluşturucu tanımıCosmos DB indexer definition

Veri içeri aktarmayı Portal sayfalarında izleyebilirsiniz.You can monitor data import in the portal pages. İlerleme durumu bildirimleri dizin oluşturma durumunu ve kaç belge yüklendiğini gösterir.Progress notifications indicate indexing status and how many documents are uploaded.

Dizin oluşturma işlemi tamamlandığında, dizini sorgulamak için Arama Gezgini ' ni kullanabilirsiniz.When indexing is complete, you can use Search explorer to query your index.

Not

Bekleyen verileri görmüyorsanız, daha fazla alan için daha fazla öznitelik ayarlamanız gerekebilir.If you don't see the data you expect, you might need to set more attributes on more fields. Yeni oluşturduğunuz dizin ve Dizin oluşturucuyu silin ve sihirbazda adım adım 5 ' teki dizin öznitelikleri için seçimlerinizi değiştirerek yeniden ilerleyin.Delete the index and indexer you just created, and step through the wizard again, modifying your selections for index attributes in step 5.

REST API'lerini kullanmaUse REST APIs

Azure Bilişsel Arama 'deki tüm dizin oluşturucular için ortak olan üç bölümlü bir iş akışından sonra Azure Cosmos DB verileri indekslemek için REST API kullanabilirsiniz: veri kaynağı oluşturma, dizin oluşturma, Dizin Oluşturucu oluşturma.You can use the REST API to index Azure Cosmos DB data, following a three-part workflow common to all indexers in Azure Cognitive Search: create a data source, create an index, create an indexer. Cosmos DB veri ayıklama, Create Indexer isteği gönderdiğinizde oluşur.Data extraction from Cosmos DB occurs when you submit the Create Indexer request. Bu istek bittikten sonra, sorgulanabilir bir dizininiz olur.After this request is finished, you will have a queryable index.

Not

Cosmos DB Gremlin API veya Cosmos DB veri dizini oluşturmak için Cassandra API önce Bu formudoldurarak geçitli önizlemelere erişim istemeniz gerekir.For indexing data from Cosmos DB Gremlin API or Cosmos DB Cassandra API you must first request access to the gated previews by filling out this form. İsteğiniz işlendikten sonra, veri kaynağını oluşturmak için REST API 2019-05-06-Preview sürümünü kullanma yönergelerini alacaksınız.Once your request is processed, you will receive instructions for how to use the REST API version 2019-05-06-Preview to create the data source.

Bu makalenin önceki kısımlarında Azure Cosmos DB Dizin oluşturma ve Azure bilişsel arama Dizin oluşturma Dizin oluşturma işleminin farklı işlemleri olduğu belirtiliyor.Earlier in this article it is mentioned that Azure Cosmos DB indexing and Azure Cognitive Search indexing indexing are distinct operations. Cosmos DB Dizin oluşturma için, varsayılan olarak tüm belgeler Cassandra API hariç otomatik olarak dizinlenir.For Cosmos DB indexing, by default all documents are automatically indexed except with the Cassandra API. Otomatik Dizin oluşturmayı kapatırsanız, belgelere yalnızca kendi bağlantıları aracılığıyla veya belge KIMLIĞI kullanılarak sorgulara erişilebilir.If you turn off automatic indexing, documents can be accessed only through their self-links or by queries by using the document ID. Azure Bilişsel Arama Dizin oluşturma, Azure Bilişsel Arama tarafından Dizin oluşturulacak koleksiyonda otomatik dizin oluşturma işleminin açık Cosmos DB olmasını gerektirir.Azure Cognitive Search indexing requires Cosmos DB automatic indexing to be turned on in the collection that will be indexed by Azure Cognitive Search. Cosmos DB Cassandra API Dizin Oluşturucu önizlemesine kaydolurken, Cosmos DB Dizin oluşturma hakkında yönergeler sağlanacaktır.When signing up for the Cosmos DB Cassandra API indexer preview, you'll be given instructions on how set up Cosmos DB indexing.

Uyarı

Azure Cosmos DB, DocumentDB 'nin yeni nesli.Azure Cosmos DB is the next generation of DocumentDB. Daha önce API sürüm 2017-11-11 ile documentdb sözdizimini kullanabilirsiniz.Previously with API version 2017-11-11 you could use the documentdb syntax. Bu, veri kaynağı türünü cosmosdb veya documentdbolarak belirtebileceğiniz anlamına gelir.This meant that you could specify your data source type as cosmosdb or documentdb. API sürüm 2019-05-06 ' den Itibaren hem Azure bilişsel arama API 'leri hem de Portal yalnızca bu makalede belirtildiği gibi cosmosdb söz dizimini destekler.Starting with API version 2019-05-06 both the Azure Cognitive Search APIs and Portal only support the cosmosdb syntax as instructed in this article. Bu, bir Cosmos DB uç noktasına bağlanmak istiyorsanız veri kaynağı türünün cosmosdb olması gerektiği anlamına gelir.This means that the data source type must cosmosdb if you would like to connect to a Cosmos DB endpoint.

1-istek için girişleri birleştirin1 - Assemble inputs for the request

Her istek için, Azure Bilişsel Arama için hizmet adı ve yönetici anahtarı (posta üst bilgisinde) ve BLOB depolama için depolama hesabı adı ve anahtarı sağlamalısınız.For each request, you must provide the service name and admin key for Azure Cognitive Search (in the POST header), and the storage account name and key for blob storage. Azure Bilişsel Arama HTTP istekleri göndermek için Postman kullanabilirsiniz.You can use Postman to send HTTP requests to Azure Cognitive Search.

Aşağıdaki dört değeri not defteri 'ne kopyalayın, böylece bunları bir isteğe yapıştırabilirsiniz:Copy the following four values into Notepad so that you can paste them into a request:

  • Azure Bilişsel Arama hizmet adıAzure Cognitive Search service name
  • Azure Bilişsel Arama yönetici anahtarıAzure Cognitive Search admin key
  • Cosmos DB bağlantı dizesiCosmos DB connection string

Bu değerleri portalda bulabilirsiniz:You can find these values in the portal:

  1. Azure Bilişsel Arama Portal sayfalarında, genel bakış sayfasından arama hizmeti URL 'sini kopyalayın.In the portal pages for Azure Cognitive Search, copy the search service URL from the Overview page.

  2. Sol gezinti bölmesinde anahtarlar ' a tıklayın ve ardından birincil ya da ikincil anahtarı kopyalayın (eşdeğerdir).In the left navigation pane, click Keys and then copy either the primary or secondary key (they are equivalent).

  3. Cosmos depolama hesabınız için Portal sayfalarına geçiş yapın.Switch to the portal pages for your Cosmos storage account. Sol gezinti bölmesindeki Ayarlaraltında anahtarlar' a tıklayın.In the left navigation pane, under Settings, click Keys. Bu sayfa bir URI, iki bağlantı dizesi kümesi ve iki anahtar kümesi sağlar.This page provides a URI, two sets of connection strings, and two sets of keys. Bağlantı dizelerinden birini Not defteri 'ne kopyalayın.Copy one of the connection strings to Notepad.

2-veri kaynağı oluşturma2 - Create a data source

Veri kaynağı , verilerdeki değişiklikleri tanımlamaya yönelik verileri, kimlik bilgilerini ve ilkeleri belirtir (koleksiyonunuzdaki değiştirilen veya silinen belgeler gibi).A data source specifies the data to index, credentials, and policies for identifying changes in the data (such as modified or deleted documents inside your collection). Veri kaynağı, birden çok Dizin Oluşturucu tarafından kullanılabilmesi için bağımsız bir kaynak olarak tanımlanır.The data source is defined as an independent resource so that it can be used by multiple indexers.

Bir veri kaynağı oluşturmak için bir POST isteğini formüle koyun:To create a data source, formulate a POST request:

POST https://[service name].search.windows.net/datasources?api-version=2019-05-06
Content-Type: application/json
api-key: [Search service admin key]

{
    "name": "mycosmosdbdatasource",
    "type": "cosmosdb",
    "credentials": {
        "connectionString": "AccountEndpoint=https://myCosmosDbEndpoint.documents.azure.com;AccountKey=myCosmosDbAuthKey;Database=myCosmosDbDatabaseId"
    },
    "container": { "name": "myCollection", "query": null },
    "dataChangeDetectionPolicy": {
        "@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
        "highWaterMarkColumnName": "_ts"
    }
}

İsteğin gövdesi, aşağıdaki alanları içermesi gereken veri kaynağı tanımını içerir:The body of the request contains the data source definition, which should include the following fields:

AlanField AçıklamaDescription
namename Gereklidir.Required. Veri kaynağı nesnenizin temsil edilebilmesi için herhangi bir ad seçin.Choose any name to represent your data source object.
typetype Gereklidir.Required. cosmosdbolmalıdır.Must be cosmosdb.
Credentialscredentials Gereklidir.Required. Cosmos DB bir bağlantı dizesi olmalıdır.Must be a Cosmos DB connection string.
SQL koleksiyonları için, bağlantı dizeleri şu biçimdedir: AccountEndpoint=<Cosmos DB endpoint url>;AccountKey=<Cosmos DB auth key>;Database=<Cosmos DB database id>For SQL collections, connection strings are in this format: AccountEndpoint=<Cosmos DB endpoint url>;AccountKey=<Cosmos DB auth key>;Database=<Cosmos DB database id>

MongoDB koleksiyonları için, bağlantı dizesine Apikind = MongoDb ekleyin:For MongoDB collections, add ApiKind=MongoDb to the connection string:
AccountEndpoint=<Cosmos DB endpoint url>;AccountKey=<Cosmos DB auth key>;Database=<Cosmos DB database id>;ApiKind=MongoDb

Gremlin grafikleri ve Cassandra tablolarında, önizlemeye erişim sağlamak için geçitli Dizin Oluşturucu önizlemesine kaydolun ve kimlik bilgilerini biçimlendirme hakkında bilgi alın.For Gremlin graphs and Cassandra tables, sign up for the gated indexer preview to get access to the preview and information about how to format the credentials.

Uç nokta URL 'sindeki bağlantı noktası numaralarını önleyin.Avoid port numbers in the endpoint url. Bağlantı noktası numarasını eklerseniz, Azure Bilişsel Arama Azure Cosmos DB veritabanınızın dizinini oluşturamıyor.If you include the port number, Azure Cognitive Search will be unable to index your Azure Cosmos DB database.
kapsayıcıcontainer Aşağıdaki öğeleri içerir:Contains the following elements:
ad: gerekli.name: Required. Endekslenecek veritabanı koleksiyonunun KIMLIĞINI belirtin.Specify the ID of the database collection to be indexed.
sorgu: isteğe bağlı.query: Optional. Rastgele bir JSON belgesini, Azure Bilişsel Arama 'in dizinetarafından kullanılabilecek düz bir şemaya düzleştirmek için bir sorgu belirtebilirsiniz.You can specify a query to flatten an arbitrary JSON document into a flat schema that Azure Cognitive Search can index.
MongoDB API 'SI, Gremlin API ve Cassandra API için sorgular desteklenmez.For the MongoDB API, Gremlin API, and Cassandra API, queries are not supported.
dataChangeDetectionPolicydataChangeDetectionPolicy Önerilen.Recommended. Bkz. Dizin oluşturma değiştirilen belgeler bölümü.See Indexing Changed Documents section.
dataDeletionDetectionPolicydataDeletionDetectionPolicy İsteğe bağlı.Optional. Bkz. Dizin oluşturma silinen belgeler bölümü.See Indexing Deleted Documents section.

Dizinli verileri şekillendirmek için sorguları kullanmaUsing queries to shape indexed data

İç içe özellikleri veya dizileri, proje JSON özelliklerini düzleştirmek için bir SQL sorgusu belirtebilir ve dizine eklenecek verileri filtreleyebilirsiniz.You can specify a SQL query to flatten nested properties or arrays, project JSON properties, and filter the data to be indexed.

Uyarı

MongoDB API 'si, gremlin APIve Cassandra APIiçin özel sorgular desteklenmez: container.query parametresinin null veya atlanmış olarak ayarlanması gerekir.Custom queries are not supported for MongoDB API, Gremlin API, and Cassandra API: container.query parameter must be set to null or omitted. Özel bir sorgu kullanmanız gerekiyorsa lütfen Kullanıcı sesimizibize bildirin.If you need to use a custom query, please let us know on User Voice.

Örnek belge:Example document:

{
    "userId": 10001,
    "contact": {
        "firstName": "andy",
        "lastName": "hoh"
    },
    "company": "microsoft",
    "tags": ["azure", "cosmosdb", "search"]
}

Filtre sorgusu:Filter query:

SELECT * FROM c WHERE c.company = "microsoft" and c._ts >= @HighWaterMark ORDER BY c._ts

Sorgu düzleştirme:Flattening query:

SELECT c.id, c.userId, c.contact.firstName, c.contact.lastName, c.company, c._ts FROM c WHERE c._ts >= @HighWaterMark ORDER BY c._ts

Projeksiyon sorgusu:Projection query:

SELECT VALUE { "id":c.id, "Name":c.contact.firstName, "Company":c.company, "_ts":c._ts } FROM c WHERE c._ts >= @HighWaterMark ORDER BY c._ts

Dizi düzleştirme sorgusu:Array flattening query:

SELECT c.id, c.userId, tag, c._ts FROM c JOIN tag IN c.tags WHERE c._ts >= @HighWaterMark ORDER BY c._ts

3-hedef arama dizini oluşturma3 - Create a target search index

Henüz yoksa bir hedef Azure bilişsel arama dizini oluşturun .Create a target Azure Cognitive Search index if you don’t have one already. Aşağıdaki örnek, bir KIMLIK ve açıklama alanı olan bir dizin oluşturur:The following example creates an index with an ID and description field:

POST https://[service name].search.windows.net/indexes?api-version=2019-05-06
Content-Type: application/json
api-key: [Search service admin key]

{
   "name": "mysearchindex",
   "fields": [{
     "name": "id",
     "type": "Edm.String",
     "key": true,
     "searchable": false
   }, {
     "name": "description",
     "type": "Edm.String",
     "filterable": false,
     "sortable": false,
     "facetable": false,
     "suggestions": true
   }]
 }

Hedef dizininizin şemasının, kaynak JSON belgelerinin şemasıyla veya özel sorgu projeksiyonunun çıkışıyla uyumlu olduğundan emin olun.Ensure that the schema of your target index is compatible with the schema of the source JSON documents or the output of your custom query projection.

Not

Bölümlenmiş koleksiyonlar için, varsayılan belge anahtarı Azure Cosmos DB _rid özelliktir. alan adları bir alt çizgi karakteriyle başlamadığı için Azure Bilişsel Arama otomatik olarak rid olarak yeniden adlandırılır.For partitioned collections, the default document key is Azure Cosmos DB's _rid property, which Azure Cognitive Search automatically renames to rid because field names cannot start with an underscore character. Ayrıca, Azure Cosmos DB _rid değerler Azure Bilişsel Arama anahtarlarında geçersiz karakterler içeriyor.Also, Azure Cosmos DB _rid values contain characters that are invalid in Azure Cognitive Search keys. Bu nedenle _rid değerleri Base64 kodlandı.For this reason, the _rid values are Base64 encoded.

MongoDB koleksiyonları için Azure Bilişsel Arama _id özelliğini otomatik olarak doc_idolarak yeniden adlandırır.For MongoDB collections, Azure Cognitive Search automatically renames the _id property to doc_id.

JSON veri türleri ve Azure Bilişsel Arama veri türleri arasında eşlemeMapping between JSON Data Types and Azure Cognitive Search Data Types

JSON veri türüJSON data type Uyumlu hedef dizin alanı türleriCompatible target index field types
BoolBool EDM. Boolean, Edm. StringEdm.Boolean, Edm.String
Tamsayılar gibi görünen sayılarNumbers that look like integers EDM. Int32, Edm. Int64, Edm. StringEdm.Int32, Edm.Int64, Edm.String
Kayan nokta gibi görünen sayılarNumbers that look like floating-points EDM. Double, Edm. dizeEdm.Double, Edm.String
DizeString Edm.StringEdm.String
Temel türlerin dizileri, örneğin ["a", "b", "c"]Arrays of primitive types, for example ["a", "b", "c"] Collection(Edm.String)Collection(Edm.String)
Tarihler gibi görünen dizelerStrings that look like dates EDM. DateTimeOffset, Edm. StringEdm.DateTimeOffset, Edm.String
GeoJSON nesneleri, örneğin {"Type": "Point", "koordinatlar": [Long, Lat]}GeoJSON objects, for example { "type": "Point", "coordinates": [long, lat] } Edm.GeographyPointEdm.GeographyPoint
Diğer JSON nesneleriOther JSON objects YokN/A

4-dizin oluşturucuyu yapılandırma ve çalıştırma4 - Configure and run the indexer

Dizin ve veri kaynağı oluşturulduktan sonra, Dizin oluşturucuyu oluşturmaya hazırsınız:Once the index and data source have been created, you're ready to create the indexer:

POST https://[service name].search.windows.net/indexers?api-version=2019-05-06
Content-Type: application/json
api-key: [admin key]

{
  "name" : "mycosmosdbindexer",
  "dataSourceName" : "mycosmosdbdatasource",
  "targetIndexName" : "mysearchindex",
  "schedule" : { "interval" : "PT2H" }
}

Bu Dizin Oluşturucu iki saatte bir çalışır (zamanlama aralığı "PT2H" olarak ayarlanır).This indexer runs every two hours (schedule interval is set to "PT2H"). Her 30 dakikada bir dizin oluşturucu çalıştırmak için, aralığı "PT30M" olarak ayarlayın.To run an indexer every 30 minutes, set the interval to "PT30M". Desteklenen en kısa Aralık 5 dakikadır.The shortest supported interval is 5 minutes. Zamanlama isteğe bağlıdır-atlanırsa, Dizin Oluşturucu yalnızca bir kez oluşturulduğunda çalışır.The schedule is optional - if omitted, an indexer runs only once when it's created. Ancak, bir dizin oluşturucuyu dilediğiniz zaman isteğe bağlı olarak çalıştırabilirsiniz.However, you can run an indexer on-demand at any time.

Dizin Oluşturucu oluşturma API 'SI hakkında daha fazla bilgi için bkz. Dizin Oluşturucu oluştur.For more details on the Create Indexer API, check out Create Indexer.

Dizin Oluşturucu zamanlamalarını tanımlama hakkında daha fazla bilgi için bkz. Azure bilişsel arama için Dizin Oluşturucu zamanlama.For more information about defining indexer schedules, see How to schedule indexers for Azure Cognitive Search.

.NET’i kullanmaUse .NET

Genel olarak kullanılabilen .NET SDK, genel olarak kullanılabilir REST API tam eşliği vardır.The generally available .NET SDK has full parity with the generally available REST API. Kavramları, iş akışını ve gereksinimleri öğrenmek için önceki REST API bölümünü incelemenizi öneririz.We recommend that you review the previous REST API section to learn concepts, workflow, and requirements. Daha sonra, yönetilen kodda bir JSON Dizin Oluşturucu uygulamak için aşağıdaki .NET API başvuru belgelerine başvurabilirsiniz.You can then refer to following .NET API reference documentation to implement a JSON indexer in managed code.

Değiştirilen belgelerin dizinini oluşturmaIndexing changed documents

Veri değişikliği algılama ilkesinin amacı, değiştirilen veri öğelerini etkili bir şekilde belirlemektir.The purpose of a data change detection policy is to efficiently identify changed data items. Şu anda desteklenen tek ilke, aşağıdaki gibi belirtilen Azure Cosmos DB tarafından sunulan _ts (timestamp) özelliğini kullanan High Water Mark ilkesidir:Currently, the only supported policy is the High Water Mark policy using the _ts (timestamp) property provided by Azure Cosmos DB, which is specified as follows:

{
    "@odata.type" : "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
    "highWaterMarkColumnName" : "_ts"
}

Bu ilkenin kullanılması, iyi bir Dizin Oluşturucu performansını güvence altına almak için önemle önerilir.Using this policy is highly recommended to ensure good indexer performance.

Özel bir sorgu kullanıyorsanız, _ts özelliğinin sorgu tarafından yansıtıldığınızdan emin olun.If you are using a custom query, make sure that the _ts property is projected by the query.

Artımlı ilerleme ve özel sorgularIncremental progress and custom queries

Dizin oluşturma sırasında artımlı ilerleme durumu, Dizin Oluşturucu yürütmesi geçici hatalara veya yürütme süresi sınırına göre kesintiye uğrarsa, dizin oluşturucunun, tüm koleksiyonu sıfırdan yeniden eklemek yerine, her çalıştırıldığında kaldığınız yeri açabilmesini sağlar.Incremental progress during indexing ensures that if indexer execution is interrupted by transient failures or execution time limit, the indexer can pick up where it left off next time it runs, instead of having to reindex the entire collection from scratch. Büyük koleksiyonlar dizinlenirken bu özellikle önemlidir.This is especially important when indexing large collections.

Özel bir sorgu kullanırken artımlı ilerlemeyi etkinleştirmek için sorgunuzun sonuçları _ts sütununa göre sipariş ettiğinden emin olun.To enable incremental progress when using a custom query, ensure that your query orders the results by the _ts column. Bu, Azure Bilişsel Arama 'in hatalara karşı artımlı ilerleme durumunu sağlamak için kullandığı düzenli denetim noktası sağlar.This enables periodic check-pointing that Azure Cognitive Search uses to provide incremental progress in the presence of failures.

Bazı durumlarda, sorgunuz bir ORDER BY [collection alias]._ts yan tümcesi içerse bile, Azure Bilişsel Arama sorgunun _tsgöre sıralı olduğunu çıkarmayabilir.In some cases, even if your query contains an ORDER BY [collection alias]._ts clause, Azure Cognitive Search may not infer that the query is ordered by the _ts. Azure Bilişsel Arama sonuçların assumeOrderByHighWaterMarkColumn yapılandırma özelliği kullanılarak sıralanmasına söylemiş olabilirsiniz.You can tell Azure Cognitive Search that results are ordered by using the assumeOrderByHighWaterMarkColumn configuration property. Bu ipucunu belirtmek için, Dizin oluşturucuyu aşağıdaki şekilde oluşturun veya güncelleştirin:To specify this hint, create or update your indexer as follows:

{
 ... other indexer definition properties
 "parameters" : {
        "configuration" : { "assumeOrderByHighWaterMarkColumn" : true } }
} 

Silinen belgelerin dizinini oluşturmaIndexing deleted documents

Koleksiyondan satırlar silindiğinde, normalde bu satırları arama dizininden da silmek istersiniz.When rows are deleted from the collection, you normally want to delete those rows from the search index as well. Veri silme algılaması ilkesinin amacı, silinen veri öğelerini etkin bir şekilde tanımlamaktır.The purpose of a data deletion detection policy is to efficiently identify deleted data items. Şu anda desteklenen tek ilke Soft Delete ilkesidir (silme işlemi bir sıralama bayrağıyla işaretlenir) ve aşağıdaki şekilde belirtilir:Currently, the only supported policy is the Soft Delete policy (deletion is marked with a flag of some sort), which is specified as follows:

{
    "@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 bir sorgu kullanıyorsanız, softDeleteColumnName tarafından başvurulan özelliğin sorgu tarafından yansıtıldığınızdan emin olun.If you are using a custom query, make sure that the property referenced by softDeleteColumnName is projected by the query.

Aşağıdaki örnek, geçici silme ilkesiyle bir veri kaynağı oluşturur:The following example creates a data source with a soft-deletion policy:

POST https://[service name].search.windows.net/datasources?api-version=2019-05-06
Content-Type: application/json
api-key: [Search service admin key]

{
    "name": "mycosmosdbdatasource",
    "type": "cosmosdb",
    "credentials": {
        "connectionString": "AccountEndpoint=https://myCosmosDbEndpoint.documents.azure.com;AccountKey=myCosmosDbAuthKey;Database=myCosmosDbDatabaseId"
    },
    "container": { "name": "myCosmosDbCollectionId" },
    "dataChangeDetectionPolicy": {
        "@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
        "highWaterMarkColumnName": "_ts"
    },
    "dataDeletionDetectionPolicy": {
        "@odata.type": "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
        "softDeleteColumnName": "isDeleted",
        "softDeleteMarkerValue": "true"
    }
}

Sonraki adımlarNext steps

Tebrikler!Congratulations! Azure Cosmos DB bir Dizin Oluşturucu kullanarak Azure Bilişsel Arama ile nasıl tümleştirileceğini öğrendiniz.You have learned how to integrate Azure Cosmos DB with Azure Cognitive Search using an indexer.