다음을 통해 공유


2단계 - 검색 인덱스 만들기 및 로드

다음 단계에 따라 검색 지원 웹 사이트를 계속 빌드합니다.

  • 새 인덱스 만들기
  • 데이터 로드

프로그램에서는 .NET용 Azure SDK의 Azure.Search.Documents를 사용합니다.

시작하기 전에 검색 서비스에 새 인덱스를 위한 공간이 있는지 확인합니다. 무료 계층 제한은 인덱스 3개입니다. 기본 계층 제한은 15개입니다

  1. Visual Studio Code에서 azure-search-static-web-app/bulk-insert 하위 디렉터리의 Program.cs 파일을 열고, Azure Search SDK를 사용하여 인증하기 위해 다음 변수를 사용자 고유의 값으로 바꿉니다.

    • YOUR-SEARCH-SERVICE-NAME(전체 URL 아님)
    • YOUR-SEARCH-ADMIN-API-KEY(API 키 찾기 참조)
    
    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에서 프로젝트 디렉터리의 하위 디렉터리인 azure-search-static-web-app/bulk-insert에 대한 통합 터미널을 엽니다.

  3. 다음 명령을 실행하여 종속성을 설치합니다.

    dotnet restore
    
  1. 여전히 동일한 하위 디렉터리(azure-search-static-web-app/bulk-insert)에서 프로그램을 실행합니다.

    dotnet run
    
  2. 코드가 실행되면서 진행률이 콘솔에 표시됩니다. 다음 출력이 표시되어야 합니다.

     Creating (or updating) search index
     Status: 201, Value: Azure.Search.Documents.Indexes.Models.SearchIndex
     Download data file
     Reading and parsing raw CSV data
     Uploading bulk book data
     Finished bulk inserting book data
    

새 검색 인덱스 검토

업로드가 완료되면 검색 인덱스를 사용할 준비가 됩니다. Azure Portal에서 새 인덱스를 검토합니다.

  1. Azure Portal에서 검색 서비스를 찾습니다.

  2. 왼쪽에서 검색 관리 > 인덱스를 선택한 다음, 좋은 책 인덱스를 선택합니다.

    인덱스가 표시된 Azure Portal의 확장 가능한 스크린샷.

  3. 기본적으로 인덱스가 검색 탐색기 탭에서 열립니다. 검색을 선택하여 인덱스에서 문서를 반환합니다.

    검색 결과를 보여 주는 Azure Portal의 확장 가능한 스크린샷

대량 가져오기 파일 변경 내용 롤백

bulk-insert 디렉터리에 있는 Visual Studio Code 통합 터미널에서 다음 git 명령을 사용하여 Program.cs 파일에 대한 변경 내용을 롤백합니다. 이 자습서를 계속 진행하는 데 필요하지는 않으므로 API 키 또는 검색 서비스 이름을 리포지토리로 저장하거나 푸시하지 않는 것이 좋습니다.

git checkout .

다음 단계

Static Web App 배포