Share via


Schritt 2 – Erstellen und Laden des Suchindexes mit .NET

Fahren Sie mit dem Erstellen Ihrer Website mit Suchunterstützung fort, indem Sie die folgenden Schritte ausführen:

  • Erstellen einer Suchressource
  • Erstellen eines neuen Indexes
  • Importieren von Daten mit .NET mithilfe des Beispielskripts und des Azure SDK Azure.Search.Documents

Erstellen einer Azure KI Search-Ressource

Erstellen Sie eine neue Suchressource über die Befehlszeile mithilfe der Azure CLI oder Azure PowerShell. Sie rufen auch einen Abfrageschlüssel ab, der für Lesezugriff auf den Index verwendet wird, und erhalten den integrierte Administratorschlüssel zum Hinzufügen von Objekten.

Sie müssen die Azure CLI oder Azure PowerShell auf Ihrem Gerät installiert haben. Wenn Sie kein lokaler Administrator auf Ihrem Gerät sind, wählen Sie Azure PowerShell aus, und verwenden Sie den Parameter „Scope“, um es als aktueller Benutzer auszuführen.

Hinweis

Für diese Aufgabe sind die Visual Studio Code-Erweiterungen für die Azure CLI und Azure PowerShell nicht erforderlich. Visual Studio Code erkennt die Befehlszeilentools ohne die Erweiterungen.

  1. Wählen Sie in Visual Studio Code unter Terminaldie Option Neues Terminal aus.

  2. Stellen Sie eine Verbindung mit Azure her:

    az login
    
  3. Listen Sie vor dem Erstellen eines neuen Suchdiensts die vorhandenen Dienste für Ihr Abonnement auf:

    az resource list --resource-type Microsoft.Search/searchServices --output table
    

    Wenn Sie über einen Dienst verfügen, den Sie verwenden möchten, notieren Sie sich den Namen, und fahren Sie dann mit dem nächsten Abschnitt fort.

  4. Erstellen Sie einen neuen Suchdienst. Verwenden Sie den folgenden Befehl als Vorlage, und fügen Sie gültige Werte für Ressourcengruppe, Dienstname, Ebene, Region, Partitionen und Replikate ein. Die folgende Anweisung verwendet die Ressourcengruppe „cognitive-search-demo-rg“, die in einem vorherigen Schritt erstellt wurde, und gibt den Tarif „Free“ an. Wenn Ihr Azure-Abonnement bereits über einen kostenlosen Suchdienst verfügt, geben Sie stattdessen einen abrechenbaren Tarif wie „Basic“ an.

    az search service create --name my-cog-search-demo-svc --resource-group cognitive-search-demo-rg --sku free --partition-count 1 --replica-count 1
    
  5. Rufen Sie einen Abfrageschlüssel, der Lesezugriff auf einen Suchdienst gewährt, ab. Ein Suchdienst wird mit zwei Administratorschlüsseln und einem Abfrageschlüssel bereitgestellt. Ersetzen Sie gültige Namen für die Ressourcengruppe und den Suchdienst. Kopieren Sie den Abfrageschlüssel in Editor, damit Sie ihn in einem späteren Schritt in den Clientcode einfügen können:

    az search query-key list --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
    
  6. Rufen Sie einen Suchdienstadministrator-API-Schlüssel ab. Ein API-Administratorschlüssel bietet Schreibzugriff auf den Suchdienst. Kopieren Sie einen Administratorschlüssel in Editor, damit Sie ihn im Massenimportschritt verwenden können, in dem ein Index erstellt und geladen wird:

    az search admin-key show --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
    

Das Skript verwendet das Azure SDK für Azure KI Search:

  1. Öffnen Sie in Visual Studio Code die Datei Program.cs im Unterverzeichnis search-website-functions-v4/bulk-insert, und ersetzen Sie die folgenden Variablen durch Ihre eigenen Werte, um sich mit dem Azure Search SDK zu authentifizieren:

    • 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");
    }
    
  2. Öffnen Sie in Visual Studio Code ein integriertes Terminal für das Unterverzeichnis search-website-functions-v4/bulk-insert des Projektverzeichnisses, und führen Sie den folgenden Befehl aus, um die Abhängigkeiten zu installieren:

    dotnet restore
    
  1. Verwenden Sie weiterhin das integrierte Terminal in Visual Studio für das Unterverzeichnis search-website-functions-v4/bulk-insert des Projektverzeichnisses, um den folgenden Bash-Befehl zum Ausführen des Skripts Program.cs auszuführen:

    dotnet run
    
  2. Während der Codeausführung wird in der Konsole der Status angezeigt.

  3. Nach Abschluss des Uploads lautet die letzte in der Konsole ausgegebene Meldung „Finished bulk inserting book data“ (Masseneinfügen von Buchdaten abgeschlossen).

Überprüfen des neuen Suchindexes

Nach Abschluss des Uploads kann der Suchindex verwendet werden. Überprüfen Sie Ihren neuen Index im Azure-Portal.

  1. Suchen Sie den Suchdienst, den Sie im vorherigen Schritt erstellt haben, im Azure-Portal.

  2. Wählen Sie auf der linken Seite Indizes und dann den „Good-Books-Index“ aus.

    Erweiterbarer Screenshot: Azure-Portal mit dem Index

  3. Standardmäßig wird der Index auf der Registerkarte Suchexplorer geöffnet. Wählen Sie Suchen aus, um Dokumente aus dem Index zurückzugeben.

    Erweiterbarer Screenshot: Azure-Portal mit Suchergebnissen

Rollback von Massenimport-Dateiänderungen

Verwenden Sie den folgenden git-Befehl im integrierten Visual Studio Code-Terminal im Verzeichnis bulk-insert, um ein Rollback der Änderungen auszuführen. Sie werden nicht benötigt, um das Tutorial fortzusetzen, und Sie sollten diese Geheimnisse nicht speichern oder in Ihr Repository pushen.

git checkout .

Kopieren des Namens Ihrer Suchressource

Notieren Sie sich den Namen der Suchressource. Sie benötigen ihn, um die Azure Functions-App mit Ihrer Suchressource zu verbinden.

Achtung

Möglicherweise möchten Sie den Administratorschlüssel für die Suche in der Azure Functions-Instanz verwenden. Dadurch wird jedoch nicht das Prinzip der geringsten Berechtigungen befolgt. Die Azure Functions-Instanz verwendet den Abfrageschlüssel, um das Prinzip der geringsten Berechtigungen einzuhalten.

Nächste Schritte

Bereitstellen Ihrer statischen Web-App