인덱서 만들기(Azure AI Search REST API)

인덱서는 Azure Storage, Azure SQL Database 및 Azure Cosmos DB와 같은 지원되는 Azure 데이터 원본에서 인덱싱을 자동화하여 몇 가지 이름을 지정합니다. 인덱서는 미리 정의된 데이터 원본인덱 스를 사용하여 원본 데이터를 추출하고 직렬화하는 인덱싱 파이프라인을 설정하여 데이터 수집을 위한 검색 서비스에 전달합니다. 이미지 및 구조화되지 않은 텍스트의 AI 보강을 위해 인덱서는 AI 처리를 정의하는 기술 세트를 수락할 수도 있습니다.

인덱서 만들기는 검색 서비스에 인덱서를 추가하고 실행합니다. 요청이 성공하면 인덱스가 데이터 원본에서 검색 가능한 콘텐츠로 채워집니다.

요청에 POST 또는 PUT을 사용할 수 있습니다. 둘 중 하나의 경우 요청 본문의 JSON 문서는 개체 정의를 제공합니다.

POST https://[service name].search.windows.net/indexers?api-version=[api-version]
    Content-Type: application/json  
    api-key: [admin key]  

또는 PUT을 사용하고 URI에서 인덱서 이름을 지정할 수 있습니다.

PUT https://[service name].search.windows.net/indexers/[indexer name]?api-version=[api-version]
    Content-Type: application/json  
    api-key: [admin key]    

모든 서비스 요청에는 HTTPS를 사용해야 합니다. 인덱서가 없으면 생성됩니다. 이미 있는 경우 새 정의로 업데이트되지만 인덱서 실행을 원하는 경우 인덱서 실행 요청을 실행해야 합니다.

인덱서 구성은 데이터 원본 유형에 따라 달라집니다. 인덱서를 만드는 방법에 대한 데이터 플랫폼 특정 지침을 보려면 관련 문서의 전체 목록을 포함하는 인덱서 개요에서 시작하세요.

URI 매개 변수

매개 변수 Description
서비스 이름 필수 사항입니다. 검색 서비스의 고유한 사용자 정의 이름으로 설정합니다.
인덱서 이름 PUT을 사용하는 경우 URI에 필요합니다. 이름은 소문자여야 하고, 문자나 숫자로 시작하고, 슬래시나 점이 없고, 128자 미만이어야 합니다. 이름은 문자 또는 숫자로 시작해야 하지만 대시가 연속되지 않는 한 나머지 이름에는 문자, 숫자 및 대시가 포함될 수 있습니다.
api-version 필수 사항입니다. 지원되는 버전 목록은 API 버전을 참조하세요.

요청 헤더

다음 표에서는 필수 요청 헤더와 선택적 요청 헤더에 대해 설명합니다.

필드 Description
콘텐츠 형식 필수 사항입니다. application/json
api-key Azure 역할을 사용하고 요청에 전달자 토큰이 제공된 경우 선택 사항이며, 그렇지 않으면 키가 필요합니다. 요청 만들기에는 쿼리 키와 api-key 달리 관리자 키로 설정된 헤더가 포함되어야 합니다. 자세한 내용은 키 인증을 사용하여 Azure AI Search에 연결을 참조하세요.

요청 본문

데이터 원본, 인덱스기술 집합인덱서 정의의 일부이지만 각각 다른 조합으로 사용될 수 있는 독립적인 구성 요소입니다. 예를 들어, 여러 인덱서에서 동일한 데이터 원본을 사용하거나, 여러 인덱서에서 동일한 인덱스를 사용하거나, 여러 인덱서를 단일 인덱스로 작성할 수 있습니다.

다음 JSON은 정의의 기본 부분에 대한 개략적인 표현입니다.

{   
    "name" : (optional on PUT; required on POST) "Name of the indexer",  
    "description" : (optional) "Anything you want, or nothing at all", 
    "dataSourceName" : (required) "Name of an existing data source",  
    "targetIndexName" : (required) "Name of an existing index",  
    "skillsetName" : (required for AI enrichment) "Name of an existing skillset",
    "disabled" : (optional) Boolean value indicating whether the indexer is disabled. False by default,
    "schedule" : (optional but runs once immediately if unspecified) { ... },  
    "parameters": { (optional)
       "batchSize": null,
       "maxFailedItems": 0,
       "maxFailedItemsPerBatch": 0,
       "base64EncodeKeys": null,
       "configuration": { (optional, mostly specific to the data source)
            "executionEnvironment": null
        }
      }, 
    "fieldMappings" : (optional) { ... },
    "outputFieldMappings" : (required for AI enrichment) { ... },
    "encryptionKey":(optional) { }
} 

요청에는 다음 속성이 포함됩니다.

속성 Description
name 필수 사항입니다. 이름은 소문자여야 하고, 문자나 숫자로 시작하고, 슬래시나 점이 없고, 128자 미만이어야 합니다. 이름은 문자 또는 숫자로 시작해야 하지만 대시가 연속되지 않는 한 나머지 이름에는 문자, 숫자 및 대시가 포함될 수 있습니다.
dataSourceName 필수 사항입니다. 기존 데이터 원본의 이름입니다. 종종 인덱서가 원본 플랫폼 특성을 악용하는 데 사용할 수 있는 속성이 포함됩니다. 따라서 인덱서에 전달하는 데이터 원본은 Azure Blob에서 콘텐츠 형식 필터링과 같은 특정 속성 및 매개 변수의 가용성을 결정합니다. 또는 Azure SQL 데이터베이스에 대한 쿼리 시간 제한입니다.
targetIndexName 필수 사항입니다. 기존 인덱스 스키마의 이름입니다. 검색 가능, 필터링 가능, 검색 가능 및 필드 사용 방법을 결정하는 기타 특성이 포함된 필드 컬렉션을 정의합니다. 인덱싱하는 동안 인덱서는 데이터 원본을 탐색하고, 필요에 따라 문서를 해독하고 정보를 추출하며, 결과를 JSON으로 serialize하고, 인덱스에 대해 정의된 스키마를 기반으로 페이로드를 인덱싱합니다.
skillsetName AI 보강에 필요합니다. 인덱서당 하나씩 기존 기술 세트의 이름입니다. 데이터 원본 및 인덱스와 마찬가지로 기술 세트는 인덱서에 연결하는 독립적인 정의입니다. 다른 인덱서로 기술 집합의 용도를 변경할 수 있지만 각 인덱서는 한 번에 하나의 기술 집합만 사용할 수 있습니다.
schedule 선택 사항이지만 지정되지 않고 사용하지 않도록 설정되지 않은 경우 즉시 한 번 실행됩니다. 일정에는 (필수) 및 startTime (선택 사항)가 포함됩니다 interval . 자세한 내용은 인덱서 예약을 참조하세요.

interval 는 인덱서가 실행되는 빈도를 지정합니다. 허용되는 가장 작은 간격은 5분이고 가장 긴 간격은 1일입니다. 형식은 XSD "dayTimeDuration" 값( ISO 8601 기간 값의 제한된 하위 집합)이어야 합니다. 이에 대한 패턴은 예제: "P[nD][T[nH][nM]]".PT15M 15분마다, PT2H 2시간마다입니다.

startTime 는 인덱서 실행을 시작해야 하는 UTC 날짜/시간입니다.
disabled 선택 사항입니다. 인덱서가 비활성화되어 있는지 여부를 나타내는 부울 값입니다. 인덱서 정의를 즉시 실행하지 않고 만들려면 이 속성을 설정합니다. False(기본값).
매개 변수 선택 사항입니다. 런타임 동작을 수정하기 위한 속성입니다.

"batchSize" (정수). 성능을 향상시키기 위해 단일 배치로 인덱싱되고 데이터 원본에서 읽는 항목 수를 지정합니다. 기본값은 원본별입니다(Azure SQL Database 및 Azure Cosmos DB의 경우 1000, Azure Blob Storage 경우 10).

"maxFailedItems" (정수). 인덱서 실행이 실패로 간주되기 전에 허용할 오류 수를 지정합니다. 기본값은 0입니다. 모든 오류에 대해 인덱싱 프로세스를 중지하지 않으려면 -1로 설정합니다. 인덱서 상태 가져오기를 사용하여 실패한 문서에 대한 정보를 검색합니다.

"maxFailedItemsPerBatch" (정수). 인덱서 실행이 실패로 간주되기 전에 각 일괄 처리에서 허용할 오류 수를 지정합니다. 기본값은 0입니다. 모든 오류에 대해 인덱싱 프로세스를 중지하지 않으려면 -1로 설정합니다.

"base64EncodeKey" (부울). 잘못된 문자가 포함된 문서 키를 인코딩할지 여부를 지정합니다.

"configuration". 데이터 원본에 따라 달라지는 속성입니다.

"executionEnvironment" (string). 내부 시스템 프로세스에서 선택한 실행 환경을 재정의합니다. 인덱서가 프라이빗 엔드포인트 연결을 통해 외부 리소스에 Private 액세스하는 경우 실행 환경을 로 명시적으로 설정해야 합니다. 이 설정은 아래에 있습니다 "configuration". 데이터 수집의 경우 이 설정은 기본 또는 표준(S1, S2, S3)으로 프로비전된 서비스에만 유효합니다. AI 보강 콘텐츠 처리의 경우 이 설정은 S2 및 S3에만 유효합니다. 유효한 값은 대/소문자를 구분하지 않으며 [null 또는 지정되지 않음], Standard (기본값) 또는 Private로 구성됩니다.
fieldMappings 선택 사항입니다. 검색 인덱스에서 원본 필드를 대상 필드에 명시적으로 연결합니다. 원본 및 대상 필드의 이름이나 형식이 다르거나 함수를 지정하려는 경우에 사용됩니다. fieldMappings 섹션에는 (필수, 기본 데이터 원본의 필드), targetFieldName (필수, 인덱스 필드) 및 인코딩 출력에 대한 선택 사항이 mappingFunction 포함 sourceFieldName 됩니다. 지원되는 함수 및 예제 목록은 필드 매핑 함수에서 찾을 수 있습니다. 자세한 내용은 필드 매핑 및 변환을 참조하세요.
outputFieldMappings 보강 파이프라인에 필요합니다. 기술 세트의 출력을 인덱스 또는 프로젝션에 매핑합니다. outputFieldMappings 섹션에는 (필수, 보강 트리의 노드), targetFieldName (필수, 인덱스 필드) 및 인코딩 출력에 대한 선택 사항이 mappingFunction 포함됩니다 sourceFieldName . 지원되는 함수 및 예제 목록은 필드 매핑 함수에서 찾을 수 있습니다. 자세한 내용은 기술 세트의 출력 필드를 매핑하는 방법을 참조하세요.
encryptionKey 선택 사항입니다. Azure Key Vault 관리되는 고유한 키를 사용하여 미사용 인덱서 정의를 암호화하는 데 사용됩니다. 2019-01-01 또는 그 이후에 생성된 청구 가능한 검색 서비스에 사용할 수 있습니다.

encryptionKey 섹션에는 사용자 정의 keyVaultKeyName (필수), 시스템 생성 keyVaultKeyVersion (필수) 및 keyVaultUri 제공 키(필수, DNS 이름이라고도 함)가 포함되어 있습니다. 예제 URI는 "https://my-keyvault-name.vault.azure.net"일 수 있습니다.

필요에 따라 관리되는 시스템 ID를 사용하지 않는지 지정할 accessCredentials 수 있습니다. 의 accessCredentials 속성에는 지정된 Azure Key Vault 대한 액세스 권한이 부여된(Microsoft Entra ID 애플리케이션 ID) 및 applicationSecret (등록된 애플리케이션의 인증 키)가 포함 applicationId 됩니다. 다음 섹션의 예제에서는 구문을 보여 줍니다.

Blob 구성 매개 변수

몇 가지 매개 변수는 Azure blob 인덱싱과 같은 특정 인덱서에만 사용됩니다.

매개 변수 형식 및 허용되는 값 사용량
"parsingMode" String
"text"
"delimitedText"
"json"
"jsonArray"
"jsonLines"
Azure blob의 경우 Blob Storage의 일반 텍스트 파일에 대한 인덱싱 성능을 향상시키기 위해 text로 설정합니다.
CSV blob의 경우 blob이 일반 CSV 파일이면 delimitedText로 설정합니다.
JSON Blob의 경우 를 로 json 설정하여 구조화된 콘텐츠를 추출하거나 jsonArray 배열의 개별 요소를 Azure AI Search에서 별도의 문서로 추출합니다. 를 사용하여 jsonLines Azure AI Search에서 개별 문서로 새 줄로 구분된 개별 JSON 엔터티를 추출합니다.
"excludedFileNameExtensions" 문자열
쉼표로 구분된 목록
사용자 정의
Azure blob의 경우 목록에 있는 모든 파일 형식을 무시합니다. 예를 들어, ".png, .png, .mp4"를 제외하여 인덱싱하는 동안 이러한 파일을 건너뛸 수 있습니다.
"indexedFileNameExtensions" 문자열
쉼표로 구분된 목록
사용자 정의
Azure blob의 경우 파일 확장명이 목록에 있으면 blob을 선택합니다. 예를 들어, 특정 애플리케이션 파일 ".docx, .pptx, .msg"의 인덱싱에 집중하여 이러한 파일 형식을 특별히 포함할 수 있습니다.
"failOnUnsupportedContentType" 부울
true
false(기본값)
Azure blob의 경우 일부 콘텐츠 형식(파일 확장명)을 사전에 알지 못하고 지원되지 않는 콘텐츠 형식이 발견되었을 때 인덱싱을 계속하려면 false로 설정합니다.
"failOnUnprocessableDocument" 부울
true
false(기본값)
Azure blob의 경우 문서 인덱싱에 실패했을 때 인덱싱을 계속하려면 false로 설정합니다.
"indexStorageMetadataOnly
ForOversizedDocuments"
부울 true
false(기본값)
Azure blob의 경우 여전히 너무 커서 처리할 수 없는 blob 콘텐츠에 대한 스토리지 메타데이터를 계속 인덱싱하려면 이 속성을 true로 설정합니다. 너무 큰 Blob은 기본적으로 오류로 처리됩니다. Blob 크기에 대한 제한은 서비스 제한을 참조하세요.
"delimitedTextHeaders" 문자열
쉼표로 구분된 목록
사용자 정의
CSV Blob의 경우 인덱스의 대상 필드에 원본 필드를 매핑하는 데 유용한 쉼표로 구분된 열 머리글 목록을 지정합니다.
"delimitedTextDelimiter" 문자열
단일 문자
사용자 정의
CSV Blob의 경우 각 줄이 새 문서를 시작하는 CSV 파일의 줄 끝 구분 기호를 지정합니다(예"|": ).
"firstLineContainsHeaders" Boolean
true(기본값)
false
CSV Blob의 경우 는 각 Blob의 첫 번째(비어 있지 않은) 줄에 헤더가 포함되어 있음을 나타냅니다.
"documentRoot" 문자열
사용자 정의 경로
JSON 배열의 경우 구조화된 문서나 반구조화된 문서가 제공되면 이 속성을 사용하여 배열의 경로를 지정할 수 있습니다.
"dataToExtract" 문자열
"storageMetadata"
"allMetadata"
"contentAndMetadata"(기본값)
Azure blob의 경우:
표준 blob 속성 및 사용자 지정 메타데이터만 인덱싱하려면 "storageMetadata"로 설정합니다.
Azure Blob Storage 하위 시스템에서 제공하는 메타데이터를 추출하려면 "allMetadata"로 설정합니다. 그러면 콘텐츠 형식별 메타데이터(예: .png 파일에 고유한 메타데이터)가 인덱싱됩니다.
각 blob에서 모든 메타데이터 및 텍스트 콘텐츠를 추출하려면 "contentAndMetadata"로 설정합니다.

AI 보강에서 이미지 분석의 경우 가 가 이외의 "none"값으로 설정된 경우 "imageAction" 설정은 "dataToExtract" 인덱서에 이미지 콘텐츠에서 추출할 데이터를 알려줍니다. Azure blob에서 .PDF 또는 다른 애플리케이션이나 이미지 파일(예: .jpg 및 .png)의 포함된 이미지 콘텐츠에 적용됩니다.
"imageAction" 문자열
"none"
"generateNormalizedImages"
"generateNormalizedImagePerPage"
Azure blob의 경우 데이터 집합에서 포함된 이미지나 이미지 파일을 무시하려면 "none"으로 설정합니다. 이것이 기본값입니다.

AI 보강의 이미지 분석의 경우 을 로"generateNormalizedImages" 설정하여 이미지에서 텍스트를 추출하고(예: 트래픽 중지 기호에서 "stop" 단어) 콘텐츠 필드의 일부로 포함합니다. 이미지를 분석하는 동안 인덱서는 문서 해독의 일환으로 정규화된 이미지의 배열을 만들고 생성된 정보를 콘텐츠 필드에 포함합니다. 이 작업을 수행하려면 "dataToExtract""contentAndMetadata"로 설정해야 합니다. 정규화된 이미지는 시각적 검색 결과에 이미지를 포함할 때 일관된 렌더링을 위해 크기 및 회전이 지정되어 균일한 이미지를 출력하는 추가 처리를 의미합니다(예: JFK 데모에서 볼 수 있는 그래프 컨트롤의 동일 크기 사진). 이 옵션을 사용할 때 각 이미지에 대해 해당 정보가 생성됩니다.

"generateNormalizedImagePerPage"로 설정하면 포함된 이미지를 추출하는 대신 PDF 파일이 다른 방식으로 처리되며, 각 페이지는 이미지로 렌더링되고 그에 따라 정규화됩니다. 이 페이지당 프로세스는 보다 "generateNormalizedImages"훨씬 더 오래 걸릴 것으로 예상됩니다. PDF가 아닌 파일 형식은 "generateNormalizedImages"가 설정된 것과 마찬가지로 처리됩니다.

구성을 "imageAction" 이외의 "none" 값으로 설정하려면 기술 세트 도 해당 인덱서에 연결해야 하며 설계상 성능이 낮은 프로세스가 될 수 있습니다.
"normalizedImageMaxWidth"
"normalizedImageMaxHeight"
50~10,000 사이의 정수 가 설정될 때 "imageAction" 생성된 정규화된 이미지의 최대 너비 또는 높이(픽셀)입니다. 기본값은 2000입니다.

정규화된 이미지의 최대 너비와 높이에 대한 2000 픽셀이라는 기본값은 OCR 기술이미지 분석 기술에서 지원하는 최대 크기에 기반합니다. OCR 기술은 영어가 아닌 언어의 경우 4200, 영어의 경우 10000의 최대 너비 및 높이를 지원합니다. 최대 한도를 늘리면 기술 세트 정의 및 문서의 언어에 따라 큰 이미지 처리에 실패할 수 있습니다.
"allowSkillsetToReadFileData" 부울
true
false(기본값)
매개 변수를 "allowSkillsetToReadFileData"true 설정하면 Blob 데이터 원본에서 다운로드한 원래 파일 데이터를 나타내는 개체인 경로 /document/file_data 가 만들어집니다. 이렇게 하면 보강 파이프라인 내에서 처리하기 위한 사용자 지정 기술 또는 문서 추출 기술에 원래 파일 데이터를 전달할 수 있습니다. 생성된 개체는 다음과 같이 정의됩니다. { "$type": "file", "data": "BASE64 encoded string of the file" }

매개 변수를 "allowSkillsetToReadFileData"true 설정하려면 기술 세트를 해당 인덱서에 연결하고 매개 변수를 "parsingMode" 또는 "text""json"로 설정해야 합니다"default".
"pdfTextRotationAlgorithm" 문자열
"none"(기본값)
"detectAngles"
매개 변수를 "pdfTextRotationAlgorithm""detectAngles" 설정하면 텍스트가 회전된 PDF 파일에서 더 잘 읽을 수 있는 텍스트 추출을 생성할 수 있습니다. 이 매개 변수를 사용하면 성능이 저하될 수 있습니다. 이 매개 변수는 PDF 파일에만 적용되며 포함된 텍스트가 있는 PDF에만 적용됩니다. PDF의 포함된 이미지 내에 회전된 텍스트가 나타나면 이 매개 변수가 적용되지 않습니다.

매개 변수를 "pdfTextRotationAlgorithm""detectAngles" 설정하려면 매개 변수를 로 "parsingMode" 설정해야 합니다 "default".

Azure Cosmos DB 구성 매개 변수

다음 매개 변수는 Cosmos DB 인덱서와 관련이 있습니다.

매개 변수 형식 및 허용되는 값 사용량
"assumeOrderByHighWaterMarkColumn" Boolean SQL API를 사용하는 Cosmos DB 인덱서의 경우 이 매개 변수를 설정하여 인덱싱을 위해 문서를 반환하는 데 사용된 쿼리가 실제로 열에 따라 정렬된다는 힌트를 Cosmos DB에 _ts 제공합니다. 이 매개 변수를 설정하면 증분 인덱싱 시나리오에 대한 더 나은 결과를 얻을 수 있습니다.

Azure SQL 구성 매개 변수

다음 매개 변수는 Azure SQL Database에만 적용됩니다.

매개 변수 형식 및 허용되는 값 사용량
"queryTimeout" String
"hh:mm:ss"
"00:05:00"
Azure SQL Database의 경우 기본값인 5분을 넘어 시간 제한을 늘리려면 이 매개 변수를 설정합니다.
"convertHighWaterMarkToRowVersion" Boolean 상위 워터 마크 열에 rowversion 데이터 형식을 사용하려면 이 매개 변수를 "true"로 설정합니다. 이 속성을 true로 설정하면 인덱서는 인덱서가 실행되기 전에 rowversion 값에서 하나를 뺍니다. 일대다 조인이 있는 뷰에는 중복 rowversion 값이 있는 행이 있을 수 있기 때문에 이 작업을 수행합니다. 1을 빼면 인덱서 쿼리에서 이러한 행을 누락하지 않습니다.
"disableOrderByHighWaterMarkColumn" Boolean 변경 검색에 사용되는 쿼리에서 ORDER BY 동작을 사용하지 않도록 설정 하려면 이 매개 변수를 "true"로 설정합니다. 높은 워터 마크 변경 검색 정책을 사용하는 경우 인덱서는 WHERE 및 ORDER BY 절을 사용하여 인덱싱이 필요한 행을 추적합니다(WHERE [High Water Mark Column] > [Current High Water Mark Value] ORDER BY [High Water Mark Column]). 이 매개 변수는 ORDER BY 동작을 사용하지 않도록 설정합니다. 인덱싱은 더 빠르게 완료되지만 어떤 이유로든 인덱서가 중단되면 전체 인덱서 작업을 완전히 반복해야 한다는 단점이 있습니다.

응답

요청이 성공적으로 실행되면 '201 생성됨'이 반환됩니다.

예제

예: 일정 및 제네릭 매개 변수가 있는 인덱서

2021년 1월 1일 UTC에서 시작하여 매시간 실행되는 일정에 따라 데이터 원본 orders 에서 참조 ordersds 하는 테이블의 데이터를 인덱스로 복사하는 인덱서를 만듭니다. 각 일괄 처리에서 인덱싱에 실패하는 항목이 5개 이하이며 인덱싱에 실패하는 총 항목 수가 10개 이하이면 각 인덱서 호출은 성공합니다.

{
    "name" : "myindexer",  
    "description" : "a cool indexer",  
    "dataSourceName" : "ordersds",  
    "targetIndexName" : "orders",  
    "schedule" : { "interval" : "PT1H", "startTime" : "2021-01-01T00:00:00Z" },  
    "parameters" : { "maxFailedItems" : 10, "maxFailedItemsPerBatch" : 5 }  
}

참고

인덱서가 특정 일정으로 설정되어 있지만 실행될 때마다 같은 문서를 반복적으로 실패하는 경우 인덱서는 성공적으로 다시 진행될 때까지 빈도가 낮은 간격(최대 24시간마다 한 번 이상)으로 실행을 시작합니다. 인덱서가 특정 지점에서 중단되는 문제를 해결했다고 생각되면 인덱서의 다시 설정, 주문형 실행, 인덱서 실행을 수행할 수 있으며, 성공적으로 진행되면 인덱서는 다시 설정된 일정 간격으로 돌아갑니다.

예: Blob 매개 변수가 있는 인덱서

필요한 경우 런타임 동작을 수정하는 구성 매개 변수를 인덱서에 적용할 수 있습니다. 구성 매개 변수는 인덱서 요청에서 쉼표로 구분되며 데이터 원본 형식과 관련이 있습니다. 다음 구성 매개 변수는 Blob을 인덱싱하는 데 사용되는 지침을 제공합니다.

  {
    "name" : "my-blob-indexer-for-cognitive-search",
    ... other indexer properties
    "parameters" : 
      { 
      "maxFailedItems" : "15", 
      "batchSize" : "100", 
      "configuration" : 
          { 
          "parsingMode" : "json", 
          "indexedFileNameExtensions" : ".json, .jpg, .png",
          "imageAction" : "generateNormalizedImages",
          "dataToExtract" : "contentAndMetadata" ,
          "executionEnvironment": "Standard"
          } 
      }
  }

예: 필드 매핑이 있는 인덱서

원본 테이블의 필드를 _id"id" 검색 인덱스의 필드에 매핑합니다. Azure AI Search는 필드 이름을 밑줄로 시작하는 것을 허용하지 않습니다. 필드 매핑은 이름 불일치를 resolve 수 있습니다. 원본 필드 이름과 대상 필드 이름 모두 대/소문자를 구분하지 않습니다. 자세한 내용은 필드 매핑 및 변환을 참조하세요.

"fieldMappings" : [
    { "sourceFieldName" : "_id", "targetFieldName" : "id" },
    { "sourceFieldName" : "_timestamp", "targetFieldName" : "timestamp" }
]

예: AI 보강을 사용하는 인덱서

및 에 대한 참조로 표시되는 AI 보강을 skillset 보여 줍니다 outputFieldMappings. 기술 집합은 별도로 정의되는 상위 수준의 리소스입니다. 이 예제는 AI 보강 자습서에서 인덱서 정의의 약어입니다.

{
  "name":"demoindexer",	
  "dataSourceName" : "demodata",
  "targetIndexName" : "demoindex",
  "skillsetName" : "demoskillset",
  "fieldMappings" : [
    {
        "sourceFieldName" : "content",
        "targetFieldName" : "content"
    }
   ],
  "outputFieldMappings" : 
  [
    {
        "sourceFieldName" : "/document/organizations", 
        "targetFieldName" : "organizations"
    },
  ],
  "parameters":
  {
  	"maxFailedItems":-1,
  	"configuration": 
    {
    "dataToExtract": "contentAndMetadata",
    "imageAction": "generateNormalizedImages"
    }
  }
}

예: 기술 세트 및 출력 필드 매핑이 있는 인덱서

기술 세트가 인덱서에 바인딩되는 AI 보강 시나리오에서는 인덱스의 검색 가능한 필드에 콘텐츠를 제공하는 보강 단계의 출력을 연결하기 위해 를 추가 outputFieldMappings 해야 합니다. 는 sourceFieldName 보강 트리의 노드입니다. 원본 문서의 두 개별 필드에서 보강하는 동안 빌드된 복합 구조일 수 있습니다. 는 targetFieldName 검색 인덱스에서 필드입니다. 자세한 내용은 기술 세트에서 출력 필드를 매핑하는 방법을 참조하세요.

"outputFieldMappings" : [
      {
        "sourceFieldName" : "/document/organizations", 
        "targetFieldName" : "organizations"
      },
      {
        "sourceFieldName" : "/document/pages/*/keyPhrases/*", 
        "targetFieldName" : "keyphrases"
      },
      {
          "sourceFieldName": "/document/languageCode",
          "targetFieldName": "language",
          "mappingFunction": null
      }      
  ]

예: 암호화 키

암호화 키는 추가 암호화에 사용되는 고객 관리형 키입니다. 자세한 내용은 Azure Key Vault 고객 관리형 키를 사용한 암호화를 참조하세요.

{
    "name" : "myindexer",  
    "description" : "a cool indexer",  
    "dataSourceName" : "ordersds",  
    "targetIndexName" : "orders",  
    "schedule" : { "interval" : "PT1H", "startTime" : "2021-01-01T00:00:00Z" },  
    "parameters" : { "maxFailedItems" : 10, "maxFailedItemsPerBatch" : 5 },
    "encryptionKey": (optional) { 
      "keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
      "keyVaultKeyVersion": "Version of the Azure Key Vault key",
      "keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
      "accessCredentials": (optional, only if not using managed system identity) {
        "applicationId": "Microsoft Entra ID application ID that was granted access permissions to your specified Azure Key Vault",
        "applicationSecret": "Authentication key of the registered application)"}
      }
}

참고 항목