Azure AI Search의 Azure Storage에 대한 인덱서를 사용하여 변경 내용 및 삭제 감지
초기 검색 인덱스를 만든 후에는 후속 인덱서 작업에서 새 문서와 변경된 문서만 선택하기를 원할 수 있습니다. Azure Storage에서 시작된 인덱싱된 콘텐츠의 경우 인덱서가 Azure Storage의 개체 및 파일에 대한 기본 제공 타임스탬프를 사용하여 마지막 업데이트를 추적하기 때문에 변경 내용 감지가 자동으로 발생합니다.
변경 내용 감지는 기본 제공되지만, 삭제 감지는 그렇지 않습니다. 인덱서는 데이터 원본에서 개체 삭제를 추적하지 않습니다. 분리된 검색 문서가 없도록 하려면 검색 문서를 먼저 삭제하는 “일시 삭제” 전략을 구현하고, 두 번째 단계로 Azure Storage에서 물리적 삭제를 수행할 수 있습니다.
일시 삭제 방법을 구현하는 방법에는 두 가지가 있습니다.
- 네이티브 Blob 일시 삭제(미리 보기), Blob Storage에만 적용
- 사용자 지정 메타데이터를 사용하여 일시 삭제
삭제 감지 전략은 첫 번째 인덱서 실행에서 적용해야 합니다. 처음 실행하기 전에 삭제 정책을 설정하지 않은 경우 정책을 구현하기 전에 삭제된 모든 문서는 나중에 인덱서에 정책을 추가하고 다시 설정하더라도 인덱스에 유지됩니다. 이 문제가 발생한 경우 새 인덱서를 통해 새 인덱스를 만들어 삭제 정책이 처음부터 적용되도록 하는 것이 좋습니다.
필수 조건
Blob Storage, Table Storage, File Storage 또는 Data Lake Storage Gen2에 대한 Azure Storage 인덱서 사용
일관된 문서 키 및 파일 구조를 사용합니다. 문서 키 또는 디렉터리 이름 및 경로 변경(ADLS Gen2에 적용됨)은 인덱서에서 인덱싱된 콘텐츠와 마지막으로 인덱싱된 시기를 파악하는 데 사용되는 내부 추적 정보를 중단합니다.
참고 항목
ADLS Gen2에서는 디렉터리의 이름을 바꿀 수 있습니다. 디렉터리의 이름을 바꾸면 해당 디렉터리의 Blob에 대한 타임스탬프가 업데이트되지 않습니다. 결과적으로 인덱서는 이러한 Blob을 다시 인덱싱하지 않습니다. 디렉터리의 이름을 바꾼 후 새 URL을 포함하므로 디렉터리의 Blob을 다시 인덱싱해야 하는 경우 나중에 실행되는 동안 인덱서가 다시 인덱싱하도록 디렉터리의 모든 Blob에 대한 LastModified
타임스탬프를 업데이트해야 합니다. Azure Blob Storage의 가상 디렉터리는 변경할 수 없으므로 이 문제가 없습니다.
네이티브 Blob 일시 삭제
이 삭제 검색 방법의 경우 Azure AI Search가 Azure Blob Storage의 네이티브 Blob 일시 삭제 기능을 사용하여 Blob이 일시 삭제된 상태로 전환되었는지 여부를 확인합니다. Blob이 이 상태에서 검색되면 검색 인덱서는 이 정보를 사용하여 인덱스에서 해당 문서를 제거합니다.
네이티브 일시 삭제에 대한 요구 사항
Blob은 Azure Blob Storage 컨테이너에 있어야 합니다. Azure AI Search 네이티브 Blob 일시 삭제 정책은 ADLS Gen2 또는 Azure Files의 Blob에 대해 지원되지 않습니다.
인덱스 내 문서에 대한 문서 키는 “metadata_storage_path”와 같이 Blob 속성 또는 Blob 메타데이터 중 하나에 매핑되어야 합니다.
일시 삭제에 대한 지원을 구성하려면 미리 보기 REST API(예:
2024-05-01-preview
) 또는 Azure Portal의 인덱서 데이터 원본 구성을 사용해야 합니다.스토리지 계정에서 Blob 버전 관리를 사용하도록 설정하면 안 됩니다. 그렇지 않으면 네이티브 일시 삭제가 의도적으로 지원되지 않습니다.
네이티브 일시 삭제 구성
Blob Storage에서 요구 사항에 따라 일시 삭제를 사용하도록 설정하는 경우 보존 정책을 인덱서 간격 일정보다 훨씬 더 높은 값으로 설정합니다. 이렇게 하면 인덱서를 실행하는 데 문제가 있거나 인덱싱할 문서 수가 많은 경우 인덱서가 일시 삭제된 Blob을 최종적으로 처리할 수 있는 시간이 많아집니다. Azure AI Search 인덱서는 Blob이 일시 삭제된 상태에 있는 동안 Blob을 처리하는 경우에만 인덱스에서 문서를 삭제합니다.
Azure AI Search에서 데이터 원본에 대한 네이티브 Blob 일시 삭제 검색 정책을 설정합니다. Azure Portal에서 또는 미리 보기 REST API(2024-05-01-preview
)를 사용하여 이 작업을 수행할 수 있습니다. 다음 지침에서는 Azure Portal에서 또는 REST API를 통해 삭제 감지 정책을 설정하는 방법을 설명합니다.
Azure Portal에 로그인합니다.
Azure AI Service 개요 페이지에서 데이터 원본 정의를 지정하기 위한 시각적 편집기인 새 데이터 원본으로 이동합니다.
다음 스크린샷은 포털에서 이러한 기능을 찾을 수 있는 위치를 보여 줍니다.
새 데이터 원본 양식에서 필요한 필드를 채우고 삭제 추적 확인란을 선택하고 네이티브 Blob 일시 삭제를 선택합니다. 그런 다음, 저장을 눌러 데이터 원본 생성에서 기능을 사용하도록 설정합니다.
네이티브 일시 삭제 정책을 사용한 삭제 취소된 Blob을 다시 인덱싱
Blob Storage에서 일시 삭제된 Blob을 복원하는 경우 인덱서가 항상 다시 인덱싱하지는 않습니다. 이는 인덱서가 Blob의 LastModified
타임스탬프를 사용하여 인덱싱이 필요한지 여부를 결정하기 때문입니다. 일시 삭제된 Blob의 삭제를 취소하면 해당 LastModified
타임스탬프가 업데이트되지 않으므로 인덱서가 최신 LastModified
타임스탬프를 사용하여 Blob을 이미 처리한 경우에는 삭제 취소된 Blob을 다시 인덱싱하지 않습니다.
삭제 취소된 Blob이 다시 인덱싱되도록 하려면 Blob의 LastModified
타임스탬프를 업데이트해야 합니다. 이 작업을 수행하는 한 가지 방법은 해당 Blob의 메타데이터를 다시 저장하는 것입니다. 메타데이터를 변경할 필요는 없지만, 메타데이터를 다시 저장하면 Blob의 LastModified
타임스탬프가 업데이트되므로 인덱서가 해당 Blob을 선택해야 함을 알 수 있습니다.
사용자 지정 메타데이터를 사용한 일시 삭제 전략
이 방법은 사용자 지정 메타데이터를 사용하여 인덱스에서 검색 문서를 제거할지 여부를 결정합니다. 이 방법에는 인덱스에서 검색 문서를 삭제한 다음 Azure Storage에서 파일을 삭제하는 두 개의 별도 작업이 필요합니다.
이 기능은 일반 공급됩니다.
Azure Storage 및 Azure AI Search 모두에서 수행해야 하는 단계가 있지만 다른 기능 종속성은 없습니다.
Azure Storage에서 파일에 사용자 지정 메타데이터 키-값 쌍을 추가하여 파일이 삭제에 대해 플래그가 지정되었음을 나타냅니다. 예를 들어 속성 이름을 “IsDeleted”로 지정하고 false로 설정할 수 있습니다. 파일을 삭제하려면 true로 변경합니다.
Azure AI Search에서 데이터 원본 정의를 편집하여 “dataDeletionDetectionPolicy” 속성을 포함합니다. 예를 들어 다음 정책은
true
값의 메타데이터 속성IsDeleted
가 있는 경우 파일을 삭제해야 하는 것으로 간주합니다.PUT https://[service name].search.windows.net/datasources/file-datasource?api-version=2024-07-01 { "name" : "file-datasource", "type" : "azurefile", "credentials" : { "connectionString" : "<your storage connection string>" }, "container" : { "name" : "my-share", "query" : null }, "dataDeletionDetectionPolicy" : { "@odata.type" :"#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy", "softDeleteColumnName" : "IsDeleted", "softDeleteMarkerValue" : "true" } }
인덱서를 실행합니다. 인덱서가 파일을 처리하고 검색 인덱스에서 문서를 삭제한 후에는 Azure Storage에서 물리적 파일을 삭제할 수 있습니다.
삭제되지 않은 Blob 및 파일 다시 인덱스
원래 원본 파일이 여전히 Azure Storage에 물리적으로 존재하는 경우 일시 삭제를 되돌릴 수 있습니다.
Azure Storage의 Blob 또는 파일에서
"softDeleteMarkerValue" : "false"
를 변경합니다.Blob 또는 파일의
LastModified
타임스탬프를 확인하여 마지막 인덱서 실행보다 최신이 되도록 합니다. 기존 메타데이터를 다시 저장하여 현재 날짜 및 시간을 강제로 업데이트할 수 있습니다.인덱서를 실행합니다.