Ejecución de un trabajo de reindexación
Hay escenarios en los que es posible que tenga parámetros de búsqueda en el servicio FHIR® en Azure Health Data Services que aún no se hayan indexado. Este escenario es relevante al definir sus propios parámetros de búsqueda personalizados. Hasta que se indexa un parámetro de búsqueda, no se puede usar en producción activa. En este artículo se explica cómo ejecutar un trabajo de reindexación para indexar los parámetros de búsqueda personalizados en la base de datos del servicio FHIR.
Advertencia
Antes de empezar, lea todo el artículo. Un trabajo de reindexación puede requerir mucho rendimiento. En este artículo se describen las opciones para limitar y controlar un trabajo de reindexación.
Procedimientos para ejecutar un trabajo de reindexación
Un trabajo de reindexación se puede ejecutar en una base de datos completa del servicio FHIR y en parámetros de búsqueda personalizados específicos.
Ejecución de un trabajo de reindexación en toda la base de datos del servicio FHIR
Para ejecutar un trabajo de reindexación, use la siguiente POST
llamada con el recurso con formato Parameters
JSON en el cuerpo de la solicitud.
POST {{FHIR_URL}}/$reindex
content-type: application/fhir+json
{
"resourceType": "Parameters",
"parameter": []
}
Deje el "parameter": []
campo en blanco (como se muestra) si no necesita ajustar los recursos asignados al trabajo de reindexación.
Si la solicitud se realiza correctamente, recibirá un código de estado 201 Creado además de un Parameters
recurso en la respuesta.
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
}
]
}
Ejecución de un trabajo de reindexación en un parámetro de búsqueda personalizado específico
Para ejecutar un trabajo de reindexación en un parámetro de búsqueda personalizado específico, use la siguiente POST
llamada con el recurso con formato Parameters
JSON en el cuerpo de la solicitud.
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.}"
}
]
}
Nota:
Para comprobar el estado de o cancelar un trabajo de reindexación, necesita el identificador de reindexación. Este es el "id"
objeto que se lleva en el "parameter"
valor de la respuesta. En el ejemplo anterior, el identificador del trabajo de reindexación sería 560c7c61-2c70-4c54-b86d-c53a9d29495e
.
Comprobación del estado de un trabajo de reindexación
Una vez que inicie un trabajo de reindexación, puede comprobar el estado del trabajo mediante la siguiente llamada.
GET {{FHIR_URL}}/_operations/reindex/{{reindexJobId}}
Este es un ejemplo de respuesta.
{
"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
}
]
}
La siguiente información se muestra en la respuesta anterior:
totalResourcesToReindex
: incluye el número total de recursos que se vuelven a indexar en este trabajo.resourcesSuccessfullyReindexed
: el número total de recursos que ya se han vuelto a indexar en este trabajo.progress
: se ha completado el porcentaje de trabajo de reindexación. Es igual aresourcesSuccessfullyReindexed
/totalResourcesToReindex
100.status
: indica si el trabajo de reindexación está en cola, en ejecución, completado, con errores o cancelado.resources
: enumera todos los tipos de recursos afectados por el trabajo de reindexación.'resourceReindexProgressByResource (CountReindexed of Count)': proporciona un recuento reindexado del recuento total, por tipo de recurso. En los casos en los que se pone en cola la reindexación de un tipo de recurso específico, solo se proporciona Count.
'searchParams': muestra la dirección URL de los parámetros de búsqueda afectados por el trabajo de reindexación.
Eliminación de un trabajo de reindexación
Si necesita cancelar un trabajo de reindexación, use una DELETE
llamada y especifique el identificador de trabajo de reindexación.
DELETE {{FHIR URL}}/_operations/reindex/{{reindexJobId}}
Consideraciones sobre el rendimiento
Un trabajo de reindexación puede requerir mucho rendimiento. El servicio FHIR ofrece controles de limitación para ayudar a administrar cómo se ejecuta un trabajo de reindexación en la base de datos.
Nota:
En los conjuntos de datos de gran tamaño, no es poco frecuente que la ejecución de un trabajo de reindexación dure varios días.
A continuación se muestra una tabla que describe los parámetros disponibles, los valores predeterminados y los intervalos recomendados para controlar los recursos de proceso del trabajo de reindexación. Puede usar estos parámetros ya sea para acelerar el proceso (usar más proceso) o ralentizarlo (usar menos proceso).
Parámetro | Descripción | Valor predeterminado | Intervalo disponible |
---|---|---|---|
QueryDelayIntervalInMilliseconds |
Retraso entre cada lote de recursos que se va a iniciar durante el trabajo de reindexación. Un número menor acelera el trabajo mientras que un número mayor lo ralentiza. | 500 MS (0,5 segundos) | De 50 a 500000 |
MaximumResourcesPerQuery |
Número máximo de recursos incluidos en el lote que se va a volver a indexar. | 100 | 1-5000 |
MaximumConcurrency |
Es el número de lotes que se realiza al mismo tiempo. | 1 | 1-10 |
Si desea usar cualquiera de los parámetros anteriores, puede pasarlos al Parameters
recurso al enviar la solicitud inicial POST
para iniciar un trabajo de reindexación.
POST {{FHIR_URL}}/$reindex
content-type: application/fhir+json
{
"resourceType": "Parameters",
"parameter": [
{
"name": "maximumConcurrency",
"valueInteger": "3"
},
{
"name": "queryDelayIntervalInMilliseconds",
"valueInteger": "1000"
},
{
"name": "maximumNumberOfResourcesPerQuery",
"valueInteger": "1"
}
]
}
Pasos siguientes
En este artículo, ha aprendido a realizar un trabajo de reindexación en el servicio FHIR. Para obtener información sobre cómo definir parámetros de búsqueda personalizados, consulte
Nota:
FHIR® es una marca registrada de HL7 y se usa con su permiso.