你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
运行重新编制索引作业
在某些情况下,你可能在 Azure Health Data Services 的 FHIR® 服务中具有搜索参数,但尚未编制索引。 定义自己的自定义搜索参数时,此方案是相关的。 在为搜索参数编制索引之前,它不能在实时生产中使用。 本文介绍如何运行重新编制索引作业以为 FHIR 服务数据库中的任何自定义搜索参数编制索引。
警告
在开始之前请务必阅读整篇文章。 重编索引作业可能会非常耗用性能。 本文讨论有关如何限制和控制重新编制索引作业的选项。
如何运行重新索引作业
可以针对整个 FHIR 服务数据库和特定的自定义搜索参数执行重新编制索引作业。
对整个 FHIR 服务数据库运行重新编制索引作业
若要运行重新编制索引作业,请在请求正文中将以下 POST
调用与 JSON 格式 Parameters
的资源配合使用。
POST {{FHIR_URL}}/$reindex
content-type: application/fhir+json
{
"resourceType": "Parameters",
"parameter": []
}
如果不需要调整分配给重新编制索引作业的资源,请将 "parameter": []
字段留空(如下所示)。
如果请求成功,则除了响应中的资源之外,还会收到 201 创建 状态代码 Parameters
。
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
}
]
}
针对特定自定义搜索参数运行重新编制索引作业
若要针对特定的自定义搜索参数运行重新编制索引作业,请在 POST
请求正文中对 JSON 格式 Parameters
的资源使用以下调用。
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)”:提供每个资源类型的总计数的重新编制索引计数。 如果特定资源类型的重新编制索引已排队,则仅提供计数。
“searchParams”:列出受重新编制索引作业影响的搜索参数的 URL。
删除重编索引作业
如果需要取消重新编制索引作业,请使用 DELETE
调用并指定重新编制索引作业 ID。
DELETE {{FHIR URL}}/_operations/reindex/{{reindexJobId}}
性能注意事项
重编索引作业可能会非常耗用性能。 FHIR 服务提供限制控制,以帮助管理重新编制索引作业在数据库上运行的方式。
注意
重编索引作业在大型数据集上运行数天的情况并不少见。
下表概述了用于控制重新编制作业计算资源索引的可用参数、默认值和建议范围。 可以使用这些参数加快进程(使用更多的计算)或减缓进程(使用更少的计算)。
参数 | 说明 | 默认值 | 可用范围 |
---|---|---|---|
QueryDelayIntervalInMilliseconds |
重编索引作业期间启动每批资源之间的延迟。 较小的数字可加快作业速度,而较大的数字会减慢作业速度。 | 500 MS(0.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 许可使用。