Выполнение задания переиндексации
Существуют сценарии, в которых могут быть параметры поиска в службе FHIR® в службах данных Работоспособности Azure, которые еще не индексированы. Этот сценарий имеет значение при определении собственных параметров пользовательского поиска. Пока параметр поиска не индексируется, его нельзя использовать в динамической рабочей среде. В этой статье описывается, как запустить задание переиндексирования для индексирования любых пользовательских параметров поиска в базе данных службы FHIR.
Предупреждение
Важно, чтобы вы прочитали всю эту статью перед началом работы. Задание переиндексации может быть очень интенсивным. В этой статье рассматриваются варианты регулирования и управления заданием переиндексации.
Как выполнить задание повторной индексации
Задание переиндексации может выполняться для всей базы данных службы FHIR и для определенных настраиваемых параметров поиска.
Выполнение задания переиндексации во всей базе данных службы FHIR
Чтобы запустить задание повторной индексации, используйте следующий POST
вызов с отформатированным Parameters
ресурсом JSON в тексте запроса.
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
вызов с отформатированным 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}}"
},
{
"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
вызов и укажите идентификатор задания переиндексации.
DELETE {{FHIR URL}}/_operations/reindex/{{reindexJobId}}
Замечания, связанные с быстродействием
Задание переиндексации может быть довольно интенсивным. Служба FHIR предлагает элементы управления регулированием, помогающие управлять выполнением задания переиндексации в базе данных.
Примечание.
Это не редкость в больших наборах данных для задания переиндексации для выполнения в течение нескольких дней.
Ниже приведена таблица с указанием доступных параметров, значений по умолчанию и рекомендуемых диапазонов для управления вычислительными ресурсами задания переиндексации. Эти параметры можно использовать для ускорения процесса (используйте больше вычислений) или замедления процесса (используйте меньше вычислений).
Параметр | Description | По умолч. | Доступный диапазон |
---|---|---|---|
QueryDelayIntervalInMilliseconds |
Задержка между каждым пакетом ресурсов, запускаемой во время задания переиндексации. Меньшее число ускоряет задание, в то время как большее число замедляет его. | 500 МС (5 секунд) | От 50 до 500000 |
MaximumResourcesPerQuery |
Максимальное количество ресурсов, включенных в пакет, которые необходимо переиндексировать. | 100 | 1-5000 |
MaximumConcurrency |
Количество пакетов, выполненных за раз. | 1 | 1–10 |
Если вы хотите использовать любой из предыдущих параметров, их можно передать в Parameters
ресурс при отправке первоначального POST
запроса, чтобы запустить задание повторной индексации.
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 .