Шаг 2. Создание и загрузка индекса поиска с помощью .NET

Продолжайте создавать веб-сайт с поддержкой поиска, выполнив следующие действия.

  • Создание ресурса поиска
  • Создание нового индекса
  • Импортируйте данные с помощью .NET с помощью примера скрипта и Azure SDK Azure.Search.Documents.

Создание ресурса поиска ИИ Azure

Создайте ресурс поиска из командной строки с помощью Azure CLI или Azure PowerShell. Вы также получите ключ запроса, используемый для доступа к индексу, и получите встроенный ключ администратора, используемый для добавления объектов.

На устройстве должен быть установлен Azure CLI или Azure PowerShell . Если вы не являетесь локальным администратором на устройстве, выберите Azure PowerShell и используйте Scope параметр для запуска от имени текущего пользователя.

Примечание.

Для этой задачи не требуются расширения Visual Studio Code для Azure CLI и Azure PowerShell. Visual Studio Code распознает средства командной строки без расширений.

  1. В Visual Studio Code в разделе "Терминал" выберите новый терминал.

  2. Подключитесь к Azure:

    az login
    
  3. Перед созданием новой службы поиска укажите существующие службы для подписки:

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

    Если у вас есть служба, которую вы хотите использовать, запишите имя и перейдите к следующему разделу.

  4. Создайте новую службу поиска. Используйте следующую команду в качестве шаблона, заменив допустимые значения для группы ресурсов, имени службы, уровня, региона, секций и реплика. В следующей инструкции используется группа ресурсов cognitive-search-demo-rg, созданная на предыдущем шаге, и указывает уровень "бесплатный". Если у вашей подписки Azure уже есть бесплатная служба поиска, укажите оплачиваемый уровень, например "базовый".

    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. Получите ключ запроса, предоставляющий доступ на чтение к службе поиска. Служба поиска подготовлена с двумя ключами администратора и одним ключом запроса. Замените допустимые имена для группы ресурсов и службы поиска. Скопируйте ключ запроса в Блокнот, чтобы его можно было вставить в клиентский код на следующем шаге:

    az search query-key list --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
    
  6. Получите ключ API администратора службы поиска. Ключ API администратора предоставляет доступ на запись к службе поиска. Скопируйте один из ключей администратора в Блокнот, чтобы его можно было использовать на этапе массового импорта, который создает и загружает индекс:

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

Сценарий использует пакет SDK Azure для поиска ИИ Azure:

  1. В Visual Studio Code откройте файл Program.cs в подкаталоге, search-website-functions-v4/bulk-insert, замените следующие переменные собственными значениями, чтобы выполнить проверку подлинности с помощью пакета SDK службы "Поиск Azure":

    • 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. Откройте встроенный терминал в Visual Studio Code для подкаталога каталога проекта search-website-functions-v4/bulk-insert и выполните приведенную ниже команду, чтобы установить зависимости.

    dotnet restore
    
  1. Продолжайте использовать встроенный терминал в Visual Studio для подкаталога каталога проекта, search-website-functions-v4/bulk-insert, чтобы выполнить следующую команду bash для запуска скрипта Program.cs:

    dotnet run
    
  2. По мере выполнения кода в консоли будет отображатся ход выполнения.

  3. После завершения отправки последним выводимым в консоли сообщением будет "Завершена массовая вставка данных книги".

Просмотр нового индекса службы "Поиск"

Индекс поиска можно использовать сразу после завершения отправки. Просмотрите новый индекс в портал Azure.

  1. В портал Azure найдите службу поиска, созданную на предыдущем шаге.

  2. Слева выберите индексы и выберите индекс хороших книг.

    Развернутый снимок экрана портал Azure с индексом.

  3. По умолчанию индекс открывается на вкладке обозревателя поиска. Выберите "Поиск ", чтобы вернуть документы из индекса.

    Расширяемый снимок экрана портал Azure с результатами поиска

Откат изменений файла с массовым импортом

Используйте следующую команду Git в интегрированном терминале Visual Studio Code в каталоге bulk-insert , чтобы откатить изменения. Они не нужны, чтобы продолжить учебник, и вы не должны сохранять или отправлять эти секреты в репозиторий.

git checkout .

Копирование имени ресурса службы "Поиск"

Запишите имя ресурса службы "Поиск". Это потребуется для подключения приложения-функции Azure к ресурсу поиска.

Внимание

Хотя вы можете заманить использовать ключ администратора поиска в функции Azure, это не следует принципу наименьших привилегий. Функция Azure будет использовать ключ запроса для обеспечения соответствия минимальным привилегиям.

Следующие шаги

Развертывание статического веб-приложения