다시 인덱스 작업 실행
아직 인덱싱되지 않은 Azure Health Data Services의 FHIR® 서비스에 검색 매개 변수가 있을 수 있는 시나리오가 있습니다. 이 시나리오는 사용자 고유의 사용자 지정 검색 매개 변수를 정의할 때 관련이 있습니다. 검색 매개 변수가 인덱싱될 때까지 라이브 프로덕션에서 사용할 수 없습니다. 이 문서에서는 다시 인덱스 작업을 실행하여 FHIR 서비스 데이터베이스의 사용자 지정 검색 매개 변수를 인덱싱하는 방법을 설명합니다.
Warning
시작하기 전에 이 전체 문서를 읽는 것이 중요합니다. 다시 인덱스 작업은 성능이 매우 많이 사용될 수 있습니다. 이 문서에서는 다시 인덱스 작업을 제한하고 제어하는 방법에 대한 옵션을 설명합니다.
재색인 작업 실행 방법
전체 FHIR 서비스 데이터베이스 및 특정 사용자 지정 검색 매개 변수에 대해 다시 인덱스 작업을 실행할 수 있습니다.
전체 FHIR 서비스 데이터베이스에서 다시 인덱스 작업 실행
다시 인덱스 작업을 실행하려면 요청 본문에서 JSON 형식 Parameters
의 리소스와 함께 다음 POST
호출을 사용합니다.
POST {{FHIR_URL}}/$reindex
content-type: application/fhir+json
{
"resourceType": "Parameters",
"parameter": []
}
"parameter": []
다시 인덱스 작업에 할당된 리소스를 조정할 필요가 없는 경우 표시된 대로 필드를 비워 둡니다.
요청이 성공하면 응답의 리소스 외 Parameters
에 201 만든 상태 코드가 표시됩니다.
HTTP/1.1 201 Created
Content-Location: https://{{FHIR URL}}/_operations/reindex/560c7c61-2c70-4c54-b86d-c53a9d29495e
{
"resourceType": "Parameters",
"id": "560c7c61-2c70-4c54-b86d-c53a9d29495e",
"meta": {
"versionId": "138035"
},
"parameter": [
{
"name": "id",
"valueString": "560c7c61-2c70-4c54-b86d-c53a9d29495e"
},
{
"name": "lastModified",
"valueDateTime": "2023-06-08T04:52:44.0974408+00:00"
},
{
"name": "queuedTime",
"valueDateTime": "2023-06-08T04:52:44.0974406+00:00"
},
{
"name": "totalResourcesToReindex",
"valueDecimal": 0.0
},
{
"name": "resourcesSuccessfullyReindexed",
"valueDecimal": 0.0
},
{
"name": "progress",
"valueDecimal": 0.0
},
{
"name": "status",
"valueString": "Queued"
},
{
"name": "maximumConcurrency",
"valueDecimal": 3.0
},
{
"name": "queryDelayIntervalInMilliseconds",
"valueDecimal": 500.0
},
{
"name": "maximumNumberOfResourcesPerQuery",
"valueDecimal": 100.0
}
]
}
특정 사용자 지정 검색 매개 변수에 대해 다시 인덱스 작업 실행
특정 사용자 지정 검색 매개 변수에 대해 다시 인덱스 작업을 실행하려면 요청 본문에서 JSON 형식 Parameters
리소스와 함께 다음 POST
호출을 사용합니다.
POST {{FHIR_URL}}/$reindex
content-type: application/fhir+json
{
"resourceType": "Parameters",
"parameter": [
{
"name": "targetSearchParameterTypes",
"valueString": "{url of custom search parameter. In case of multiple custom search parameters, url list can be comma separated.}"
}
]
}
참고 항목
다시 인덱스 작업의 상태를 확인하거나 취소하려면 다시 인덱스 ID가 필요합니다. 응답 "id"
값에 "parameter"
전달된 값입니다. 앞의 예제에서 다시 인덱스 작업의 ID는 다음과 같습니다 560c7c61-2c70-4c54-b86d-c53a9d29495e
.
다시 인덱스 작업의 상태를 확인하는 방법
다시 인덱스 작업을 시작하면 다음 호출을 사용하여 작업의 상태를 확인할 수 있습니다.
GET {{FHIR_URL}}/_operations/reindex/{{reindexJobId}}
다음은 응답 예제입니다.
{
"resourceType": "Parameters",
"id": "560c7c61-2c70-4c54-b86d-c53a9d29495e",
"meta": {
"versionId": "138087"
},
"parameter": [
{
"name": "id",
"valueString": "560c7c61-2c70-4c54-b86d-c53a9d29495e"
},
{
"name": "startTime",
"valueDateTime": "2023-06-08T04:54:53.2943069+00:00"
},
{
"name": "endTime",
"valueDateTime": "2023-06-08T04:54:54.4052272+00:00"
},
{
"name": "lastModified",
"valueDateTime": "2023-06-08T04:54:54.4053002+00:00"
},
{
"name": "queuedTime",
"valueDateTime": "2023-06-08T04:52:44.0974406+00:00"
},
{
"name": "totalResourcesToReindex",
"valueDecimal": 2.0
},
{
"name": "resourcesSuccessfullyReindexed",
"valueDecimal": 2.0
},
{
"name": "progress",
"valueDecimal": 100.0
},
{
"name": "status",
"valueString": "Completed"
},
{
"name": "maximumConcurrency",
"valueDecimal": 3.0
},
{
"name": "resources",
"valueString": "{{LIST_OF_IMPACTED_RESOURCES}}"
},
{
"name": "resourceReindexProgressByResource (CountReindexed of Count)",
"valueString": "{{RESOURCE_TYPE:REINDEXED_COUNT OF TOTAL_COUNT}}"
},
{
"name": "searchParams",
"valueString": "{{LIST_OF_SEARCHPARAM_URLS}}"
},
{
"name": "queryDelayIntervalInMilliseconds",
"valueDecimal": 500.0
},
{
"name": "maximumNumberOfResourcesPerQuery",
"valueDecimal": 100.0
}
]
}
다음 정보는 이전 응답에 나와 있습니다.
totalResourcesToReindex
: 이 작업에서 다시 인덱싱되는 총 리소스 수를 포함합니다.resourcesSuccessfullyReindexed
: 이 작업에서 이미 다시 인덱싱된 총 리소스 수입니다.progress
: 작업 비율을 다시 인덱싱합니다.resourcesSuccessfullyReindexed
/totalResourcesToReindex
x 100과 같습니다.status
: 다시 인덱스 작업이 큐에 대기, 실행 중, 완료, 실패 또는 취소되었는지 여부를 나타냅니다.resources
: 다시 인덱스 작업의 영향을 받는 모든 리소스 유형을 나열합니다.'resourceReindexProgressByResource(CountReindexed of Count)': 리소스 종류당 총 개수의 다시 인덱싱된 수를 제공합니다. 특정 리소스 종류에 대한 다시 인덱싱이 큐에 대기 중인 경우 Count만 제공됩니다.
'searchParams': 다시 인덱스 작업의 영향을 받는 검색 매개 변수의 URL을 나열합니다.
다시 인덱스 작업 삭제
다시 인덱스 작업을 취소해야 하는 경우 호출을 DELETE
사용하고 다시 인덱스 작업 ID를 지정합니다.
DELETE {{FHIR URL}}/_operations/reindex/{{reindexJobId}}
성능 고려 사항
다시 인덱스 작업은 성능이 매우 많이 사용될 수 있습니다. FHIR 서비스는 데이터베이스에서 다시 인덱스 작업이 실행되는 방식을 관리하는 데 도움이 되는 제한 컨트롤을 제공합니다.
참고 항목
다시 인덱스 작업이 며칠 동안 실행되는 것은 대용량 데이터 세트에서 드문 일이 아닙니다.
다음은 다시 인덱스 작업 컴퓨팅 리소스를 제어하기 위한 사용 가능한 매개 변수, 기본값 및 권장 범위를 요약한 표입니다. 이러한 매개 변수를 사용하여 프로세스 속도를 향상시키거나(더 많은 컴퓨팅 사용) 프로세스 속도를 늦출 수 있습니다(더 적은 컴퓨팅 사용).
매개 변수 | 설명 | 기본값 | 사용 가능한 범위 |
---|---|---|---|
QueryDelayIntervalInMilliseconds |
다시 인덱싱 작업 중에 시작되는 리소스의 각 일괄 처리 간의 지연입니다. 숫자가 작을수록 작업 속도가 빨라지고 숫자가 클수록 속도가 느려집니다. | 500MS(.5초) | 50~500000 |
MaximumResourcesPerQuery |
다시 인덱싱할 일괄 처리에 포함된 최대 리소스 수입니다. | 100 | 1-5000 |
MaximumConcurrency |
한 번에 수행되는 일괄 처리 수입니다. | 1 | 1-10 |
위의 매개 변수를 사용하려는 경우 초기 요청을 보내 POST
다시 인덱스 작업을 시작할 때 리소스에 전달할 Parameters
수 있습니다.
POST {{FHIR_URL}}/$reindex
content-type: application/fhir+json
{
"resourceType": "Parameters",
"parameter": [
{
"name": "maximumConcurrency",
"valueInteger": "3"
},
{
"name": "queryDelayIntervalInMilliseconds",
"valueInteger": "1000"
},
{
"name": "maximumNumberOfResourcesPerQuery",
"valueInteger": "1"
}
]
}
다음 단계
이 문서에서는 FHIR 서비스에서 다시 인덱스 작업을 수행하는 방법을 알아보았습니다. 사용자 지정 검색 매개 변수를 정의하는 방법을 알아보려면
참고 항목
FHIR®은 HL7의 등록 상표이며, HL7의 사용 허가 하에 사용됩니다.