Выполнение задания повторной индексации
Существуют сценарии, в которых у вас могут быть параметры поиска в службе FHIR в службах azure Health Data Services, которые еще не проиндексированы. Этот сценарий является актуальным при определении собственных параметров пользовательского поиска. Пока параметр поиска не будет проиндексирован, его нельзя использовать в динамической рабочей среде. В этой статье описывается, как выполнить задание повторной индексации для индексирования всех параметров пользовательского поиска, которые еще не были проиндексированы в базе данных службы FHIR.
Предупреждение
Прежде чем приступить к работе, важно прочитать всю эту статью. Задание повторной индексации может быть очень ресурсоемким. В этой статье рассматриваются варианты регулирования задания повторной индексации и управления ими.
Как выполнить задание повторной индексации
Задание повторной индексации может выполняться для всей базы данных службы FHIR и для определенного параметра пользовательского поиска.
Выполнение задания повторной индексации для всей базы данных службы FHIR
Чтобы запустить задание повторной индексации, используйте следующий POST
вызов с ресурсом в формате Parameters
JSON в тексте запроса:
POST {{FHIR_URL}}/$reindex
content-type: application/fhir+json
{
"resourceType": "Parameters",
"parameter": []
}
Оставьте поле пустым "parameter": []
(как показано на рисунке), если не нужно настраивать ресурсы, выделенные для задания повторной индексации.
Если запрос выполнен успешно, вы получите код состояния 201 Created в дополнение к ресурсу 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)': предоставляет повторное число общего числа для каждого типа ресурса. В случаях, когда переиндексирование для определенного типа ресурса помещается в очередь, предоставляется только значение Count.
searchParams: список URL-адресов параметров поиска, затронутых заданием повторной индексации.
Удаление задания повторной индексации
Если необходимо отменить задание повторной индексации, используйте DELETE
вызов и укажите идентификатор задания повторной индексации:
DELETE {{FHIR URL}}/_operations/reindex/{{reindexJobId}}
Вопросы производительности
Задание повторной индексации может быть весьма ресурсоемким. Служба FHIR предлагает некоторые элементы управления регулированием, помогающие управлять выполнением задания повторной индексации в базе данных.
Примечание
В больших наборах данных нередки случаи, когда задание повторной индексации выполняется в течение нескольких дней.
Ниже приведена таблица с доступными параметрами, значениями по умолчанию и рекомендуемыми диапазонами для управления вычислительными ресурсами повторной индексации задания. Эти параметры можно использовать для ускорения процесса (используйте больше вычислительных ресурсов) или замедления процесса (используйте меньше вычислительных ресурсов).
Параметр | Описание | Default | Доступный диапазон |
---|---|---|---|
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.