Выполнение задания переиндексирования в AZURE API для FHIR
Внимание
Поддержка Azure API для FHIR будет прекращена 30 сентября 2026 г. Следуйте стратегиям миграции, чтобы перейти в службу FHIR® служб azure Health Data Services к этой дате. Из-за прекращения поддержки Azure API для FHIR с 1 апреля 2025 г. новые развертывания будут невозможны. Служба FHIR служб работоспособности Azure — это развивающаяся версия Azure API для FHIR, которая позволяет клиентам управлять службами FHIR, DICOM и MedTech с интеграцией с другими службами Azure.
Существуют сценарии, в которых могут быть параметры поиска или сортировки в API Azure для FHIR®, которые еще не индексированы. Этот сценарий имеет значение при определении собственных параметров поиска. Пока параметр поиска не индексируется, его нельзя использовать в поиске. В этой статье описывается, как запустить задание переиндексации для индексирования параметров поиска в базе данных службы FHIR.
Предупреждение
Важно, чтобы вы прочитали всю эту статью перед началом работы. Задание переиндексации может быть очень интенсивным. В этой статье содержатся параметры регулирования и управления заданием переиндексации.
Как выполнить задание повторной индексации
Задание переиндексации можно выполнять для всей базы данных службы FHIR и для определенных настраиваемых параметров поиска.
Выполнение задания переиндексации во всей базе данных службы FHIR
Чтобы запустить задание повторной индексации, используйте следующий POST
вызов с отформатированным Parameters
ресурсом JSON в тексте запроса.
POST {{FHIR URL}}/$reindex
{
“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": "\"4c0049cd-0000-0100-0000-607dc5a90000\""
},
"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
вызов с отформатированным Parameters
ресурсом JSON в тексте запроса.
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"
Это перенос в значении"parameter"
, возвращаемом в ответе. В предыдущем примере идентификатор задания переиндексации будет 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}}h"
},
{
"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 {{FHIR URL}}/_operations/reindex/{{reindexJobId}
Замечания, связанные с быстродействием
Задание переиндексации может быть довольно интенсивным. Мы реализовали некоторые элементы управления регулированием, которые помогут вам управлять выполнением задания переиндексации в базе данных.
Примечание.
Это не редкость в больших наборах данных для задания переиндексации для выполнения в течение нескольких дней. Для базы данных с 30 000 000 ресурсами мы заметили, что для повторной индексации всей базы данных потребовалось 4-5 дней в 100 000 единиц запросов (ЕЗ).
Ниже приведена таблица с указанием доступных параметров, значений по умолчанию и рекомендуемых диапазонов. Эти параметры можно использовать для ускорения процесса (используйте больше вычислительных ресурсов) или замедления процесса (используйте меньше вычислений). Например, можно запустить задание переиндексации в низкое время трафика и увеличить вычислительные ресурсы, чтобы сделать это быстрее. Вы также можете использовать параметры, чтобы обеспечить низкое использование вычислительных ресурсов и запустить его в течение нескольких дней в фоновом режиме.
Параметр | Description | По умолч. | Доступный диапазон |
---|---|---|---|
QueryDelayIntervalInMilliseconds | Задержка между каждым пакетом ресурсов, запускаемой во время задания переиндексации. Меньшее число ускоряет задание, в то время как более высокое число замедляет его. | 500 МС (5 секунд) | 50-500000 |
MaximumResourcesPerQuery | Максимальное количество ресурсов, включенных в пакет ресурсов, которые необходимо переиндексировать. | 100 | 1-5000 |
Максимальная параллелизмность | Количество пакетов, выполненных за раз. | 1 | 1–10 |
targetDataStoreUsagePercentage | Позволяет указать, какой процент хранилища данных будет использоваться для задания повторного индексации. Например, можно указать 50 % и убедиться, что в большинстве случаев задание переиндексации будет использовать 50 % доступных единиц запросов в Azure Cosmos DB. | Нет, это означает, что можно использовать до 100 % . | 0–100 |
Если вы хотите использовать любой из предыдущих параметров, их можно передать в ресурс параметров при запуске задания переиндексации.
{
"resourceType": "Parameters",
"parameter": [
{
"name": "maximumConcurrency",
"valueInteger": "3"
},
{
"name": "targetDataStoreUsagePercentage",
"valueInteger": "20"
},
{
"name": "queryDelayIntervalInMilliseconds",
"valueInteger": "1000"
},
{
"name": "maximumNumberOfResourcesPerQuery",
"valueInteger": "1"
}
]
}
Следующие шаги
Из этой статьи вы узнали, как запустить задание повторного индексации. Сведения о том, как определить новые параметры поиска, требующие задания переиндексации, см. в разделе
Примечание.
FHIR® является зарегистрированным товарным знаком HL7 и используется с разрешением HL7 .