Rychlý start: Vytvoření indexu vyhledávání pomocí starší klientské knihovny Microsoft.Azure.Search verze 10
Tento článek je rychlý start jazyka C# pro starší klientskou knihovnu Microsoft.Azure.Search (verze 10) nahrazenou klientskou knihovnou Azure.Search.Documents (verze 11).
Poznámka
Pokud máte existující nebo doletové vývojové projekty, můžete dál používat verzi 10. V případě nových projektů nebo použití nových funkcí byste ale měli přejít na novou knihovnu.
Informace o tomto rychlém startu
Vytvořte konzolovou aplikaci .NET Core v jazyce C#, která vytváří, načítá a dotazuje Azure Cognitive Search index pomocí Visual Studio a klientských knihoven Microsoft.Azure.Search.
Tento článek vysvětluje, jak vytvořit aplikaci. Můžete si také stáhnout a spustit úplnou aplikaci.
Poznámka
Ukázkový kód v tomto článku používá synchronní metody sady Azure Cognitive Search verze 10 .NET SDK pro jednoduchost. V produkčních scénářích ale doporučujeme použít asynchronní metody ve vašich vlastních aplikacích, aby byly škálovatelné a responzivní. Můžete například použít CreateAsync
místo DeleteAsync
Create
a Delete
.
Požadavky
Než začnete, musíte mít následující:
Účet Azure s aktivním předplatným. Zdarma si vytvořte účet.
Služba Azure Cognitive Search. Vytvořte službu nebo vyhledejte existující službu v rámci vašeho aktuálního předplatného. Pro účely tohoto rychlého startu můžete použít bezplatnou službu.
Visual Studio libovolnou edici. Vzorový kód a pokyny byly testovány na bezplatné edici Community.
Získání klíče a adresy URL
Volání služby vyžadují koncový bod adresy URL a přístupový klíč pro každý požadavek. Vyhledávací služba se vytvoří s oběma službami, takže pokud jste do předplatného přidali Azure Cognitive Search, získejte potřebné informace pomocí těchto kroků:
Přihlaste se k Azure Portal a na stránce Přehled vyhledávací služby získejte adresu URL. Příkladem koncového bodu může být
https://mydemo.search.windows.net
.V Nastavení>Keys získejte klíč správce pro úplná práva ke službě. Existují dva zaměnitelné klíče správce, které jsou k dispozici pro zajištění kontinuity podnikových procesů v případě, že potřebujete jeden převést. Primární nebo sekundární klíč můžete použít u žádostí o přidání, úpravu a odstraňování objektů.
Získejte také klíč dotazu. Osvědčeným postupem je vydávat požadavky na dotazy s přístupem jen pro čtení.
Všechny požadavky vyžadují klíč rozhraní API pro každý požadavek odeslaný do vaší služby. Platný klíč vytváří na základě žádosti vztah důvěryhodnosti mezi aplikací, která žádost odeslala, a službou, která ji zpracovává.
Nastavení prostředí
Začněte otevřením Visual Studio a vytvořením nového projektu konzolové aplikace, který může běžet v .NET Core.
Instalace balíčků NuGet
Balíček Microsoft.Azure.Search se skládá z několika klientských knihoven distribuovaných jako NuGet balíčků.
Pro tento projekt použijte verzi 10 Microsoft.Azure.Search
balíčku NuGet a nejnovější Microsoft.Extensions.Configuration.Json
balíček NuGet.
V nástrojích>NuGet Správce balíčků vyberte Spravovat NuGet balíčky pro řešení....
Klikněte na Browse (Procházet).
Vyhledejte
Microsoft.Azure.Search
a vyberte verzi 10.Kliknutím na Nainstalovat vpravo přidáte sestavení do projektu a řešení.
Opakujte výběr
Microsoft.Extensions.Configuration.Json
verze 2.2.0 nebo novější.
Přidání informací o službě Azure Cognitive Search
V Průzkumník řešení klikněte pravým tlačítkem myši na projekt a vyberte Přidat>novou položku... .
V části Přidat novou položku vyhledejte JSON a vraťte seznam typů položek souvisejících s JSON.
Zvolte Soubor JSON, pojmenujte soubor appsettings.json a klikněte na Přidat.
Přidejte soubor do výstupního adresáře. Klikněte pravým tlačítkem na appsettings.json a vyberte Vlastnosti. V okně Kopírovat do výstupního adresáře vyberte Kopírovat, pokud je novější.
Do nového souboru JSON zkopírujte následující KÓD JSON.
{ "SearchServiceName": "<YOUR-SEARCH-SERVICE-NAME>", "SearchServiceAdminApiKey": "<YOUR-ADMIN-API-KEY>", "SearchIndexName": "hotels-quickstart" }
Nahraďte název vyhledávací služby (YOUR-SEARCH-SERVICE-NAME) a klíč rozhraní API pro správu (YOUR-ADMIN-API-KEY) platnými hodnotami. Pokud je
https://mydemo.search.windows.net
váš koncový bod služby , název služby by byl "mydemo
".
Přidat třídu ". Soubory metody do projektu
Tento krok je nutný k vytvoření smysluplného výstupu v konzole. Při tisku výsledků do okna konzoly musí být jednotlivá pole z objektu Hotel vrácena jako řetězce. Tento krok implementuje ToString() k provedení této úlohy, kterou provedete zkopírováním potřebného kódu do dvou nových souborů.
Přidejte do projektu dvě prázdné definice třídy: Address.Methods.cs, Hotel.Methods.cs
V souboru Address.Methods.cs přepište výchozí obsah následujícím kódem , řádky 1-25.
V Hotel.Methods.cs zkopírujte řádky 1-68.
1. Vytvoření indexu
Index hotelů se skládá z jednoduchých a složitých polí, kde jednoduché pole je "HotelName" nebo "Description" a komplexní pole jsou adresa s dílčími poli nebo kolekcí místností. Pokud index obsahuje komplexní typy, izolujte definice komplexních polí v samostatných třídách.
Přidejte do projektu dvě prázdné definice třídy: Address.cs, Hotel.cs
V souboru Address.cs přepište výchozí obsah následujícím kódem:
using System; using Microsoft.Azure.Search; using Microsoft.Azure.Search.Models; using Newtonsoft.Json; namespace AzureSearchQuickstart { public partial class Address { [IsSearchable] public string StreetAddress { get; set; } [IsSearchable, IsFilterable, IsSortable, IsFacetable] public string City { get; set; } [IsSearchable, IsFilterable, IsSortable, IsFacetable] public string StateProvince { get; set; } [IsSearchable, IsFilterable, IsSortable, IsFacetable] public string PostalCode { get; set; } [IsSearchable, IsFilterable, IsSortable, IsFacetable] public string Country { get; set; } } }
V Hotel.cs třída definuje celkovou strukturu indexu, včetně odkazů na třídu adresy.
namespace AzureSearchQuickstart { using System; using Microsoft.Azure.Search; using Microsoft.Azure.Search.Models; using Newtonsoft.Json; public partial class Hotel { [System.ComponentModel.DataAnnotations.Key] [IsFilterable] public string HotelId { get; set; } [IsSearchable, IsSortable] public string HotelName { get; set; } [IsSearchable] [Analyzer(AnalyzerName.AsString.EnMicrosoft)] public string Description { get; set; } [IsSearchable] [Analyzer(AnalyzerName.AsString.FrLucene)] [JsonProperty("Description_fr")] public string DescriptionFr { get; set; } [IsSearchable, IsFilterable, IsSortable, IsFacetable] public string Category { get; set; } [IsSearchable, IsFilterable, IsFacetable] public string[] Tags { get; set; } [IsFilterable, IsSortable, IsFacetable] public bool? ParkingIncluded { get; set; } [IsFilterable, IsSortable, IsFacetable] public DateTimeOffset? LastRenovationDate { get; set; } [IsFilterable, IsSortable, IsFacetable] public double? Rating { get; set; } public Address Address { get; set; } } }
Atributy v poli určují, jak se používá v aplikaci. Atribut musí být například
IsSearchable
přiřazen ke každému poli, které by mělo být součástí fulltextového vyhledávání.Poznámka
V sadě .NET SDK musí být pole explicitně přiřazena jako
IsSearchable
, ,IsSortable
IsFilterable
aIsFacetable
. Toto chování je na rozdíl od rozhraní REST API, které implicitně umožňuje přiřazení na základě datového typu (například jednoduchá řetězcová pole jsou automaticky prohledávatelná).Přesně jedno pole v indexu typu
string
musí být klíčové pole, které jednoznačně identifikuje každý dokument. V tomto schématu jeHotelId
klíč .V tomto indexu pole popisu používají volitelnou
analyzer
vlastnost, která je určena, pokud chcete přepsat výchozí standardní analyzátor Lucene. Poledescription_fr
používá francouzský analyzátor Lucene (FrLucene), protože ukládá francouzský text. Používádescription
volitelný analyzátor jazyka Microsoftu (EnMicrosoft).V souboru Program.cs vytvořte instanci
SearchServiceClient
třídy pro připojení ke službě pomocí hodnot uložených v konfiguračním souboru aplikace (appsettings.json).SearchServiceClient
Indexes
má vlastnost, která poskytuje všechny metody, které potřebujete k vytvoření, výpisu, aktualizaci nebo odstranění indexů Azure Cognitive Search.using System; using System.Linq; using System.Threading; using Microsoft.Azure.Search; using Microsoft.Azure.Search.Models; using Microsoft.Extensions.Configuration; namespace AzureSearchQuickstart { class Program { // Demonstrates index delete, create, load, and query // Commented-out code is uncommented in later steps static void Main(string[] args) { IConfigurationBuilder builder = new ConfigurationBuilder().AddJsonFile("appsettings.json"); IConfigurationRoot configuration = builder.Build(); SearchServiceClient serviceClient = CreateSearchServiceClient(configuration); string indexName = configuration["SearchIndexName"]; Console.WriteLine("{0}", "Deleting index...\n"); DeleteIndexIfExists(indexName, serviceClient); Console.WriteLine("{0}", "Creating index...\n"); CreateIndex(indexName, serviceClient); // Uncomment next 3 lines in "2 - Load documents" // ISearchIndexClient indexClient = serviceClient.Indexes.GetClient(indexName); // Console.WriteLine("{0}", "Uploading documents...\n"); // UploadDocuments(indexClient); // Uncomment next 2 lines in "3 - Search an index" // Console.WriteLine("{0}", "Searching index...\n"); // RunQueries(indexClient); Console.WriteLine("{0}", "Complete. Press any key to end application...\n"); Console.ReadKey(); } // Create the search service client private static SearchServiceClient CreateSearchServiceClient(IConfigurationRoot configuration) { string searchServiceName = configuration["SearchServiceName"]; string adminApiKey = configuration["SearchServiceAdminApiKey"]; SearchServiceClient serviceClient = new SearchServiceClient(searchServiceName, new SearchCredentials(adminApiKey)); return serviceClient; } // Delete an existing index to reuse its name private static void DeleteIndexIfExists(string indexName, SearchServiceClient serviceClient) { if (serviceClient.Indexes.Exists(indexName)) { serviceClient.Indexes.Delete(indexName); } } // Create an index whose fields correspond to the properties of the Hotel class. // The Address property of Hotel will be modeled as a complex field. // The properties of the Address class in turn correspond to sub-fields of the Address complex field. // The fields of the index are defined by calling the FieldBuilder.BuildForType() method. private static void CreateIndex(string indexName, SearchServiceClient serviceClient) { var definition = new Microsoft.Azure.Search.Models.Index() { Name = indexName, Fields = FieldBuilder.BuildForType<Hotel>() }; serviceClient.Indexes.Create(definition); } } }
Pokud je to možné, nasdílejte jednu instanci
SearchServiceClient
aplikace, abyste se vyhnuli příliš velkému počtu připojení. Metody tříd jsou pro takové sdílení bezpečné pro přístup z více vláken.Třída má několik konstruktorů. Ten, který chcete, přijímá jako parametry název vaší vyhledávací služby a objekt
SearchCredentials
.SearchCredentials
zabalí váš klíč api-key.V definici indexu je nejjednodušší způsob, jak vytvořit
Field
objekty volánímFieldBuilder.BuildForType
metody, předání třídy modelu pro parametr typu. Třída modelu obsahuje vlastnosti, které se mapují na pole vašeho indexu. Toto mapování umožňuje vytvořit vazbu dokumentů z indexu vyhledávání na instance třídy modelu.Poznámka
Pokud nemáte v úmyslu používat třídu modelu, stále můžete definovat index přímým vytvořením objektů
Field
. Můžete zadat název pole do konstruktoru, společně s datovým typem (nebo analyzátor pro pole řetězce). Můžete také nastavit další vlastnosti, jako jeIsSearchable
,IsFilterable
a pojmenovat několik.Stisknutím klávesy F5 sestavte aplikaci a vytvořte index.
Pokud se projekt úspěšně sestaví, otevře se okno konzoly, na obrazovce se zapisují stavové zprávy pro odstranění a vytvoření indexu.
2. Načtení dokumentů
V Azure Cognitive Search jsou dokumenty datové struktury, které jsou vstupy indexování a výstupy z dotazů. Jak bylo získáno z externího zdroje dat, vstupy dokumentů můžou být řádky v databázi, objekty blob v úložišti objektů blob nebo dokumenty JSON na disku. V tomto příkladu přebíráme zástupce a vkládáme dokumenty JSON pro čtyři hotely do samotného kódu.
Při nahrávání dokumentů musíte použít IndexBatch
objekt. Obsahuje IndexBatch
kolekci IndexAction
objektů, z nichž každý obsahuje dokument a vlastnost s informací, Azure Cognitive Search jakou akci provést (nahrávání, sloučení, odstranění a mergeOrUpload).
V souboru Program.cs vytvořte pole dokumentů a akcí indexu a předejte pole .
IndexBatch
Následující dokumenty odpovídají indexu rychlého startu hotelu, jak je definováno třídami hotelů a adres.// Upload documents as a batch private static void UploadDocuments(ISearchIndexClient indexClient) { var actions = new IndexAction<Hotel>[] { IndexAction.Upload( new Hotel() { HotelId = "1", HotelName = "Secret Point Motel", Description = "The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.", DescriptionFr = "L'hôtel est idéalement situé sur la principale artère commerciale de la ville en plein cœur de New York. A quelques minutes se trouve la place du temps et le centre historique de la ville, ainsi que d'autres lieux d'intérêt qui font de New York l'une des villes les plus attractives et cosmopolites de l'Amérique.", Category = "Boutique", Tags = new[] { "pool", "air conditioning", "concierge" }, ParkingIncluded = false, LastRenovationDate = new DateTimeOffset(1970, 1, 18, 0, 0, 0, TimeSpan.Zero), Rating = 3.6, Address = new Address() { StreetAddress = "677 5th Ave", City = "New York", StateProvince = "NY", PostalCode = "10022", Country = "USA" } } ), IndexAction.Upload( new Hotel() { HotelId = "2", HotelName = "Twin Dome Motel", Description = "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts.", DescriptionFr = "L'hôtel est situé dans une place du XIXe siècle, qui a été agrandie et rénovée aux plus hautes normes architecturales pour créer un hôtel moderne, fonctionnel et de première classe dans lequel l'art et les éléments historiques uniques coexistent avec le confort le plus moderne.", Category = "Boutique", Tags = new[] { "pool", "free wifi", "concierge" }, ParkingIncluded = false, LastRenovationDate = new DateTimeOffset(1979, 2, 18, 0, 0, 0, TimeSpan.Zero), Rating = 3.60, Address = new Address() { StreetAddress = "140 University Town Center Dr", City = "Sarasota", StateProvince = "FL", PostalCode = "34243", Country = "USA" } } ), IndexAction.Upload( new Hotel() { HotelId = "3", HotelName = "Triple Landscape Hotel", Description = "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel’s restaurant services.", DescriptionFr = "L'hôtel est situé dans une place du XIXe siècle, qui a été agrandie et rénovée aux plus hautes normes architecturales pour créer un hôtel moderne, fonctionnel et de première classe dans lequel l'art et les éléments historiques uniques coexistent avec le confort le plus moderne.", Category = "Resort and Spa", Tags = new[] { "air conditioning", "bar", "continental breakfast" }, ParkingIncluded = true, LastRenovationDate = new DateTimeOffset(2015, 9, 20, 0, 0, 0, TimeSpan.Zero), Rating = 4.80, Address = new Address() { StreetAddress = "3393 Peachtree Rd", City = "Atlanta", StateProvince = "GA", PostalCode = "30326", Country = "USA" } } ), IndexAction.Upload( new Hotel() { HotelId = "4", HotelName = "Sublime Cliff Hotel", Description = "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 1800 palace.", DescriptionFr = "Le sublime Cliff Hotel est situé au coeur du centre historique de sublime dans un quartier extrêmement animé et vivant, à courte distance de marche des sites et monuments de la ville et est entouré par l'extraordinaire beauté des églises, des bâtiments, des commerces et Monuments. Sublime Cliff fait partie d'un Palace 1800 restauré avec amour.", Category = "Boutique", Tags = new[] { "concierge", "view", "24-hour front desk service" }, ParkingIncluded = true, LastRenovationDate = new DateTimeOffset(1960, 2, 06, 0, 0, 0, TimeSpan.Zero), Rating = 4.6, Address = new Address() { StreetAddress = "7400 San Pedro Ave", City = "San Antonio", StateProvince = "TX", PostalCode = "78216", Country = "USA" } } ), }; var batch = IndexBatch.New(actions); try { indexClient.Documents.Index(batch); } catch (IndexBatchException e) { // When a service is under load, indexing might fail for some documents in the batch. // Depending on your application, you can compensate by delaying and retrying. // For this simple demo, we just log the failed document keys and continue. Console.WriteLine( "Failed to index some of the documents: {0}", String.Join(", ", e.IndexingResults.Where(r => !r.Succeeded).Select(r => r.Key))); } // Wait 2 seconds before starting queries Console.WriteLine("Waiting for indexing...\n"); Thread.Sleep(2000); }
Jakmile inicializujete
IndexBatch
objekt, můžete ho odeslat do indexu volánímDocuments.Index
objektuSearchIndexClient
.Documents
je vlastnostSearchIndexClient
, která poskytuje metody pro přidávání, úpravy, odstraňování nebo dotazování dokumentů v indexu.Okolní
try
/catch
voláníIndex
metody zachytí selhání indexování, ke kterým může dojít v případě, že je vaše služba zatížená velkým zatížením. V produkčním kódu můžete zpozdit a potom zkusit indexovat dokumenty, které selhaly, nebo protokolovat a pokračovat podobně jako v ukázce, nebo ho zpracovat jiným způsobem, který splňuje požadavky vaší aplikace na konzistenci dat.Dvousekundové zpoždění kompenzuje indexování, což je asynchronní, takže všechny dokumenty je možné indexovat před spuštěním dotazů. Kódování zpoždění je obvykle nezbytné pouze v ukázkách, testech a ukázkových aplikacích.
V souboru Program.cs v hlavní části zrušte komentář řádků pro "2 – Načíst dokumenty".
// Uncomment next 3 lines in "2 - Load documents" ISearchIndexClient indexClient = serviceClient.Indexes.GetClient(indexName); Console.WriteLine("{0}", "Uploading documents...\n"); UploadDocuments(indexClient);
Stisknutím klávesy F5 znovu sestavíte aplikaci.
Pokud se projekt úspěšně sestaví, otevře se okno konzoly, psaní stavových zpráv tentokrát se zprávou o nahrání dokumentů. Na Azure Portal by teď na stránce Přehled vyhledávací služby měl mít index rychlého startu 4 dokumenty.
Další informace o zpracování dokumentů najdete v tématu "Jak sada .NET SDK zpracovává dokumenty".
3. Prohledání indexu
Výsledky dotazu můžete získat hned po indexování prvního dokumentu, ale skutečné testování indexu by mělo počkat na indexování všech dokumentů.
Tato část přidá dvě části funkcí: logiku dotazu a výsledky. Pro dotazy použijte metodu Search
. Tato metoda přijímá hledaný text a další parametry.
Třída DocumentsSearchResult
představuje výsledky.
V souboru Program.cs vytvořte metodu WriteDocuments, která vytiskne výsledky hledání do konzoly.
private static void WriteDocuments(DocumentSearchResult<Hotel> searchResults) { foreach (SearchResult<Hotel> result in searchResults.Results) { Console.WriteLine(result.Document); } Console.WriteLine(); }
Vytvořte metodu RunQueries pro spouštění dotazů a vracení výsledků. Výsledky jsou objekty hotelu. Pomocí vybraného parametru můžete zobrazit jednotlivá pole. Pokud pole není součástí parametru select, jeho odpovídající vlastnost Hotel bude null.
private static void RunQueries(ISearchIndexClient indexClient) { SearchParameters parameters; DocumentSearchResult<Hotel> results; // Query 1 Console.WriteLine("Query 1: Search for term 'Atlanta' with no result trimming"); parameters = new SearchParameters(); results = indexClient.Documents.Search<Hotel>("Atlanta", parameters); WriteDocuments(results); // Query 2 Console.WriteLine("Query 2: Search on the term 'Atlanta', with trimming"); Console.WriteLine("Returning only these fields: HotelName, Tags, Address:\n"); parameters = new SearchParameters() { Select = new[] { "HotelName", "Tags", "Address" }, }; results = indexClient.Documents.Search<Hotel>("Atlanta", parameters); WriteDocuments(results); // Query 3 Console.WriteLine("Query 3: Search for the terms 'restaurant' and 'wifi'"); Console.WriteLine("Return only these fields: HotelName, Description, and Tags:\n"); parameters = new SearchParameters() { Select = new[] { "HotelName", "Description", "Tags" } }; results = indexClient.Documents.Search<Hotel>("restaurant, wifi", parameters); WriteDocuments(results); // Query 4 -filtered query Console.WriteLine("Query 4: Filter on ratings greater than 4"); Console.WriteLine("Returning only these fields: HotelName, Rating:\n"); parameters = new SearchParameters() { Filter = "Rating gt 4", Select = new[] { "HotelName", "Rating" } }; results = indexClient.Documents.Search<Hotel>("*", parameters); WriteDocuments(results); // Query 5 - top 2 results Console.WriteLine("Query 5: Search on term 'boutique'"); Console.WriteLine("Sort by rating in descending order, taking the top two results"); Console.WriteLine("Returning only these fields: HotelId, HotelName, Category, Rating:\n"); parameters = new SearchParameters() { OrderBy = new[] { "Rating desc" }, Select = new[] { "HotelId", "HotelName", "Category", "Rating" }, Top = 2 }; results = indexClient.Documents.Search<Hotel>("boutique", parameters); WriteDocuments(results); }
V dotazu existují dva způsoby porovnávání termínů: fulltextové vyhledávání a filtry. Fulltextový vyhledávací dotaz hledá jeden nebo více termínů v
IsSearchable
polích v indexu. Filtr je logický výraz, který se vyhodnocuje přesIsFilterable
pole v indexu. Můžete použít fulltextové vyhledávání a filtry společně nebo samostatně.Vyhledávání i filtrování se provádí pomocí metody
Documents.Search
. Vyhledávací dotaz lze předat v parametrusearchText
, zatímco výraz filtru lze předat ve vlastnostiFilter
třídySearchParameters
. Chcete-li filtrovat bez vyhledávání, stačí předat"*"
jako hodnotu parametrusearchText
. Chcete-li vyhledávat bez filtrování, ponechte vlastnostFilter
nenastavenou nebo instanciSearchParameters
vůbec nepředávejte.V souboru Program.cs v hlavní části zrušte komentář řádků pro "3 - Search".
// Uncomment next 2 lines in "3 - Search an index" Console.WriteLine("{0}", "Searching documents...\n"); RunQueries(indexClient);
Řešení je teď hotové. Stisknutím klávesy F5 znovu sestavíte aplikaci a spustíte program v plném rozsahu.
Výstup obsahuje stejné zprávy jako předtím s přidáním informací o dotazu a výsledků.
Vyčištění prostředků
Pokud pracujete s vlastním předplatným, je vhodné vždy na konci projektu zkontrolovat, jestli budete vytvořené prostředky ještě potřebovat. Prostředky, které necháte běžet, vás stojí peníze. Můžete odstraňovat prostředky jednotlivě nebo odstraněním skupiny prostředků odstranit celou sadu prostředků najednou.
Prostředky můžete najít a spravovat na portálu pomocí odkazu Všechny prostředky nebo skupiny prostředků v levém navigačním podokně.
Pokud používáte bezplatnou službu, nezapomeňte, že jste omezeni na tři indexy, indexery a zdroje dat. Jednotlivé položky na portálu můžete odstranit, abyste zůstali pod limitem.
Další kroky
V tomto rychlém startu v jazyce C# jste propracovali řadu úloh k vytvoření indexu, načtení dokumentů a spouštění dotazů. V různých fázích jsme si vzali zástupce, abychom zjednodušili kód pro čitelnost a porozumění. Pokud máte zkušenosti se základními koncepty, doporučujeme vám další článek pro zkoumání alternativních přístupů a konceptů, které prohlubují vaše znalosti.
Vzorový kód a index jsou rozbalené verze tohoto kódu. Další ukázka přidá kolekci Rooms, používá různé třídy a akce a podrobněji se podíváme na to, jak zpracování funguje.
Chcete optimalizovat a ušetřit útratu v cloudu?