Steg 2 – Skapa och läsa in sökindex med .NET
Fortsätt att skapa din sökaktiverade webbplats genom att följa dessa steg:
- Skapa en sökresurs
- Skapa ett nytt index
- Importera data med .NET med exempelskriptet och Azure SDK Azure.Search.Documents.
Skapa en Azure AI Search-resurs
Skapa en ny sökresurs från kommandoraden med antingen Azure CLI eller Azure PowerShell. Du hämtar också en frågenyckel som används för läsåtkomst till indexet och hämtar den inbyggda administratörsnyckeln som används för att lägga till objekt.
Du måste ha Azure CLI eller Azure PowerShell installerat på enheten. Om du inte är lokal administratör på enheten väljer du Azure PowerShell och använder parametern Scope
för att köra som den aktuella användaren.
Kommentar
Den här uppgiften kräver inte Visual Studio Code-tilläggen för Azure CLI och Azure PowerShell. Visual Studio Code identifierar kommandoradsverktygen utan tilläggen.
I Visual Studio Code går du till Terminal och väljer Ny terminal.
Anslut till Azure:
az login
Innan du skapar en ny söktjänst anger du de befintliga tjänsterna för din prenumeration:
az resource list --resource-type Microsoft.Search/searchServices --output table
Om du har en tjänst som du vill använda kan du anteckna namnet och sedan gå vidare till nästa avsnitt.
Skapa en ny söktjänst. Använd följande kommando som en mall och ersätt giltiga värden för resursgruppen, tjänstnamnet, nivån, regionen, partitionerna och replikerna. Följande instruktion använder resursgruppen "cognitive-search-demo-rg" som skapades i ett tidigare steg och anger nivån "kostnadsfri". Om din Azure-prenumeration redan har en kostnadsfri söktjänst anger du en fakturerbar nivå, till exempel "basic" i stället.
az search service create --name my-cog-search-demo-svc --resource-group cognitive-search-demo-rg --sku free --partition-count 1 --replica-count 1
Hämta en frågenyckel som ger läsbehörighet till en söktjänst. En söktjänst etableras med två administratörsnycklar och en frågenyckel. Ersätt giltiga namn för resursgruppen och söktjänsten. Kopiera frågenyckeln till Anteckningar så att du kan klistra in den i klientkoden i ett senare steg:
az search query-key list --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
Hämta en API-nyckel för söktjänstens administratör. En administratörs-API-nyckel ger skrivåtkomst till söktjänsten. Kopiera någon av administratörsnycklarna till Anteckningar så att du kan använda den i massimportsteget som skapar och läser in ett index:
az search admin-key show --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
Förbereda massimportskriptet för sökning
Skriptet använder Azure SDK för Azure AI Search:
Öppna filen i underkatalogen
Program.cs
i Visual Studio Code ochsearch-website-functions-v4/bulk-insert
ersätt följande variabler med dina egna värden för att autentisera med Azure Search SDK:- YOUR-SEARCH-RESOURCE-NAME
- YOUR-SEARCH-ADMIN-KEY
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"); }
Öppna en integrerad terminal i Visual Studio Code för projektkatalogens underkatalog och
search-website-functions-v4/bulk-insert
kör sedan följande kommando för att installera beroendena.dotnet restore
Kör massimportskriptet för sökning
Fortsätt att använda den integrerade terminalen i Visual Studio för projektkatalogens underkatalog,
search-website-functions-v4/bulk-insert
, för att köra följande bash-kommando för att köra skriptetProgram.cs
:dotnet run
När koden körs visar konsolen förlopp.
När uppladdningen är klar är den sista instruktionen som skrivs ut till konsolen "Slutförd massinfogning av bokdata".
Granska det nya sökindexet
När uppladdningen är klar är sökindexet redo att användas. Granska ditt nya index i Azure-portalen.
Leta reda på söktjänsten som du skapade i föregående steg i Azure-portalen.
Till vänster väljer du Index och sedan indexet good-books.
Som standard öppnas indexet på fliken Sökutforskaren . Välj Sök om du vill returnera dokument från indexet.
Återställning av massimportfiländringar
Använd följande git-kommando i visual studiokodens integrerade terminal i bulk-insert
katalogen för att återställa ändringarna. De behövs inte för att fortsätta självstudien och du bör inte spara eller push-överföra dessa hemligheter till lagringsplatsen.
git checkout .
Kopiera sökresursens namn
Anteckna namnet på sökresursen. Du behöver detta för att ansluta Azure-funktionsappen till din sökresurs.
Varning
Du kan vara frestad att använda din sökadministratörsnyckel i Azure-funktionen, men det följer inte principen om lägsta behörighet. Azure-funktionen använder frågenyckeln för att följa lägsta behörighet.