Шаг 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 распознает средства командной строки без расширений.
В Visual Studio Code в разделе "Терминал" выберите новый терминал.
Подключитесь к Azure:
az login
Перед созданием новой службы поиска укажите существующие службы для подписки:
az resource list --resource-type Microsoft.Search/searchServices --output table
Если у вас есть служба, которую вы хотите использовать, запишите имя и перейдите к следующему разделу.
Создайте новую службу поиска. Используйте следующую команду в качестве шаблона, заменив допустимые значения для группы ресурсов, имени службы, уровня, региона, секций и реплика. В следующей инструкции используется группа ресурсов 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
Получите ключ запроса, предоставляющий доступ на чтение к службе поиска. Служба поиска подготовлена с двумя ключами администратора и одним ключом запроса. Замените допустимые имена для группы ресурсов и службы поиска. Скопируйте ключ запроса в Блокнот, чтобы его можно было вставить в клиентский код на следующем шаге:
az search query-key list --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
Получите ключ API администратора службы поиска. Ключ API администратора предоставляет доступ на запись к службе поиска. Скопируйте один из ключей администратора в Блокнот, чтобы его можно было использовать на этапе массового импорта, который создает и загружает индекс:
az search admin-key show --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
Подготовка скрипта массового импорта для Поиска
Сценарий использует пакет SDK Azure для поиска ИИ Azure:
В 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"); }
Откройте встроенный терминал в Visual Studio Code для подкаталога каталога проекта
search-website-functions-v4/bulk-insert
и выполните приведенную ниже команду, чтобы установить зависимости.dotnet restore
Запуск скрипта массового импорта для службы "Поиск"
Продолжайте использовать встроенный терминал в Visual Studio для подкаталога каталога проекта,
search-website-functions-v4/bulk-insert
, чтобы выполнить следующую команду bash для запуска скриптаProgram.cs
:dotnet run
По мере выполнения кода в консоли будет отображатся ход выполнения.
После завершения отправки последним выводимым в консоли сообщением будет "Завершена массовая вставка данных книги".
Просмотр нового индекса службы "Поиск"
Индекс поиска можно использовать сразу после завершения отправки. Просмотрите новый индекс в портал Azure.
В портал Azure найдите службу поиска, созданную на предыдущем шаге.
Слева выберите индексы и выберите индекс хороших книг.
По умолчанию индекс открывается на вкладке обозревателя поиска. Выберите "Поиск ", чтобы вернуть документы из индекса.
Откат изменений файла с массовым импортом
Используйте следующую команду Git в интегрированном терминале Visual Studio Code в каталоге bulk-insert
, чтобы откатить изменения. Они не нужны, чтобы продолжить учебник, и вы не должны сохранять или отправлять эти секреты в репозиторий.
git checkout .
Копирование имени ресурса службы "Поиск"
Запишите имя ресурса службы "Поиск". Это потребуется для подключения приложения-функции Azure к ресурсу поиска.
Внимание
Хотя вы можете заманить использовать ключ администратора поиска в функции Azure, это не следует принципу наименьших привилегий. Функция Azure будет использовать ключ запроса для обеспечения соответствия минимальным привилегиям.