Stap 2: Zoekindex maken en laden met .NET
Ga door met het bouwen van uw website met zoekmogelijkheden door de volgende stappen uit te voeren:
- Een zoekresource maken
- Een nieuwe index maken
- Importeer gegevens met .NET met behulp van het voorbeeldscript en Azure SDK Azure.Search.Documents.
Een Azure AI Search-resource maken
Maak een nieuwe zoekresource vanaf de opdrachtregel met behulp van de Azure CLI of Azure PowerShell. U haalt ook een querysleutel op die wordt gebruikt voor leestoegang tot de index en haalt de ingebouwde beheersleutel op die wordt gebruikt voor het toevoegen van objecten.
U moet Azure CLI of Azure PowerShell op uw apparaat hebben geïnstalleerd. Als u geen lokale beheerder op uw apparaat bent, kiest u Azure PowerShell en gebruikt u de Scope
parameter om als de huidige gebruiker uit te voeren.
Notitie
Voor deze taak zijn de Visual Studio Code-extensies voor Azure CLI en Azure PowerShell niet vereist. Visual Studio Code herkent de opdrachtregelprogramma's zonder de extensies.
Selecteer in Visual Studio Code onder Terminal de optie Nieuwe terminal.
Verbinding maken naar Azure:
az login
Voordat u een nieuwe zoekservice maakt, vermeldt u de bestaande services voor uw abonnement:
az resource list --resource-type Microsoft.Search/searchServices --output table
Als u een service hebt die u wilt gebruiken, noteert u de naam en gaat u verder naar de volgende sectie.
Maak een nieuwe zoekservice. Gebruik de volgende opdracht als sjabloon, waarbij u geldige waarden vervangt door de resourcegroep, servicenaam, laag, regio, partities en replica's. De volgende instructie maakt gebruik van de resourcegroep cognitive-search-demo-rg die in een vorige stap is gemaakt en geeft de 'gratis' laag op. Als uw Azure-abonnement al een gratis zoekservice heeft, geeft u in plaats daarvan een factureerbare laag op, zoals Basic.
az search service create --name my-cog-search-demo-svc --resource-group cognitive-search-demo-rg --sku free --partition-count 1 --replica-count 1
Haal een querysleutel op die leestoegang verleent tot een zoekservice. Een zoekservice wordt ingericht met twee beheerderssleutels en één querysleutel. Vervang geldige namen voor de resourcegroep en zoekservice. Kopieer de querysleutel naar Kladblok, zodat u deze in een latere stap in de clientcode kunt plakken:
az search query-key list --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
Haal een API-sleutel voor de zoekservicebeheerder op. Een beheer-API-sleutel biedt schrijftoegang tot de zoekservice. Kopieer een van de beheerderssleutels naar Kladblok zodat u deze kunt gebruiken in de stap voor bulkimport waarmee een index wordt gemaakt en geladen:
az search admin-key show --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
Het bulksgewijs importscript voorbereiden voor Zoeken
Het script maakt gebruik van de Azure SDK voor Azure AI Search:
Open in Visual Studio Code het
Program.cs
bestand in de submap,search-website-functions-v4/bulk-insert
vervang de volgende variabelen door uw eigen waarden om te verifiëren met de Azure Search SDK:- NAAM VAN UW ZOEK-RESOURCE
- UW ZOEK-ADMIN-SLEUTEL
using Azure; using Azure.Search.Documents; using Azure.Search.Documents.Indexes; using Azure.Search.Documents.Indexes.Models; using AzureSearch.BulkInsert; using ServiceStack; const string BOOKS_URL = "https://raw.githubusercontent.com/Azure-Samples/azure-search-sample-data/main/good-books/books.csv"; const string SEARCH_ENDPOINT = "https://YOUR-SEARCH-RESOURCE-NAME.search.windows.net"; const string SEARCH_KEY = "YOUR-SEARCH-ADMIN-KEY"; const string SEARCH_INDEX_NAME = "good-books"; Uri searchEndpointUri = new(SEARCH_ENDPOINT); SearchClient client = new( searchEndpointUri, SEARCH_INDEX_NAME, new AzureKeyCredential(SEARCH_KEY)); SearchIndexClient clientIndex = new( searchEndpointUri, new AzureKeyCredential(SEARCH_KEY)); await CreateIndexAsync(clientIndex); await BulkInsertAsync(client); static async Task CreateIndexAsync(SearchIndexClient clientIndex) { Console.WriteLine("Creating (or updating) search index"); SearchIndex index = new BookSearchIndex(SEARCH_INDEX_NAME); var result = await clientIndex.CreateOrUpdateIndexAsync(index); Console.WriteLine(result); } static async Task BulkInsertAsync(SearchClient client) { Console.WriteLine("Download data file"); using HttpClient httpClient = new(); var csv = await httpClient.GetStringAsync(BOOKS_URL); Console.WriteLine("Reading and parsing raw CSV data"); var books = csv.ReplaceFirst("book_id", "id").FromCsv<List<BookModel>>(); Console.WriteLine("Uploading bulk book data"); _ = await client.UploadDocumentsAsync(books); Console.WriteLine("Finished bulk inserting book data"); }
Open een geïntegreerde terminal in Visual Studio Code voor de submap van de projectmap en
search-website-functions-v4/bulk-insert
voer vervolgens de volgende opdracht uit om de afhankelijkheden te installeren.dotnet restore
Voer het script voor bulkimport uit voor Search
Ga door met het gebruik van de geïntegreerde terminal in Visual Studio voor de submap
search-website-functions-v4/bulk-insert
van de projectmap, om de volgende bash-opdracht uit te voeren om hetProgram.cs
script uit te voeren:dotnet run
Terwijl de code wordt uitgevoerd, wordt de voortgang van de console weergegeven.
Wanneer het uploaden is voltooid, wordt de laatste instructie afgedrukt naar de console: 'Voltooid bulksgewijs invoegen van boekgegevens'.
De nieuwe zoekindex controleren
Zodra het uploaden is voltooid, is de zoekindex klaar voor gebruik. Controleer uw nieuwe index in Azure Portal.
Zoek in Azure Portal de zoekservice die u in de vorige stap hebt gemaakt.
Selecteer aan de linkerkant Indexen en selecteer vervolgens de index good-books.
De index wordt standaard geopend op het tabblad Search Explorer . Selecteer Zoeken om documenten uit de index te retourneren.
Wijzigingen in bulksgewijs importeren van bestanden terugdraaien
Gebruik de volgende Git-opdracht in de geïntegreerde Terminal van Visual Studio Code in de bulk-insert
map om de wijzigingen terug te draaien. Ze zijn niet nodig om door te gaan met de zelfstudie en u moet deze geheimen niet opslaan of naar uw opslagplaats pushen.
git checkout .
De naam van uw zoekresource kopiëren
Noteer de naam van uw zoekresource. U hebt deze nodig om de Azure Function-app te verbinden met uw zoekresource.
Let op
Hoewel u misschien geneigd bent om uw zoekbeheerderssleutel in de Azure-functie te gebruiken, volgt dat niet het principe van minimale bevoegdheden. De Azure-functie gebruikt de querysleutel om te voldoen aan minimale bevoegdheden.