Executando um trabalho reindexar
Há cenários em que você pode ter parâmetros de pesquisa no serviço FHIR nos Serviços de Dados de Integridade do Azure que ainda não foram indexados. Esse cenário é relevante quando você define seus próprios parâmetros de pesquisa personalizados. Até que o parâmetro de pesquisa seja indexado, ele não poderá ser usado em produção dinâmica. Este artigo aborda como executar um trabalho de reindexação para indexar todos os parâmetros de pesquisa personalizados que ainda não foram indexados em seu banco de dados de serviço FHIR.
Aviso
É importante que você leia este artigo inteiro, antes de começar. Um trabalho de reindexação pode exigir alto desempenho. Este artigo discute opções de como limitar e controlar um trabalho de reindexação.
Como executar um trabalho de reindexação
O trabalho reindex pode ser executado em todo o banco de dados de serviço FHIR e em um parâmetro de pesquisa personalizado específico.
Executar trabalho reindexar em um banco de dados de serviço FHIR inteiro
Para executar o trabalho reindexar, use a seguinte POST
chamada com o recurso formatado Parameters
em JSON no corpo da solicitação:
POST {{FHIR_URL}}/$reindex
content-type: application/fhir+json
{
"resourceType": "Parameters",
"parameter": []
}
Deixe o "parameter": []
campo em branco (conforme mostrado) se você não precisar ajustar os recursos alocados para o trabalho reindexar.
Se a solicitação for bem-sucedida, você receberá um código 201 Criado status além de um Parameters
recurso na resposta.
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
}
]
}
Executar trabalho reindexar em um parâmetro de pesquisa personalizado específico
Para executar o trabalho reindexar em um parâmetro de pesquisa personalizado específico, use a seguinte POST
chamada com o recurso formatado Parameters
em JSON no corpo da solicitação:
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.}"
}
]
}
Observação
Para marcar o status de um trabalho reindexar ou cancelar o trabalho, você precisará da ID reindex. Esse é o "id"
transportado no "parameter"
valor retornado na resposta. No exemplo acima, a ID do trabalho de reindexação seria 560c7c61-2c70-4c54-b86d-c53a9d29495e
.
Como verificar o status de um trabalho de reindexação
Depois de iniciar um trabalho de reindexação, você pode verificar o status do trabalho usando a seguinte chamada:
GET {{FHIR_URL}}/_operations/reindex/{{reindexJobId}}
Um exemplo de resposta:
{
"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
}
]
}
As seguintes informações são mostradas na resposta acima:
totalResourcesToReindex
: inclui o número total de recursos que estão sendo reindexados neste trabalho.resourcesSuccessfullyReindexed
: o número total de recursos que já foram reindexados neste trabalho.progress
: porcentagem de trabalho reindex concluída.resourcesSuccessfullyReindexed
/totalResourcesToReindex
É igual a x 100.status
: afirma se o trabalho reindex está na fila, em execução, concluído, com falha ou cancelado.resources
: lista todos os tipos de recursos afetados pelo trabalho reindexar.'resourceReindexProgressByResource (CountReindexed de Count)': fornece contagem reindexada da contagem total, por tipo de recurso. Nos casos em que a reindexação de um tipo de recurso específico está na fila, somente Count é fornecido.
'searchParams': lista a URL dos parâmetros de pesquisa afetados pelo trabalho reindex.
Excluir um trabalho de reindexação
Se você precisar cancelar um trabalho reindexar, use uma DELETE
chamada e especifique a ID do trabalho reindexar:
DELETE {{FHIR URL}}/_operations/reindex/{{reindexJobId}}
Considerações sobre o desempenho
Um trabalho de reindexação pode exigir alto desempenho. O serviço FHIR oferece alguns controles de limitação para ajudá-lo a gerenciar como um trabalho reindexado é executado em seu banco de dados.
Observação
Em grandes conjuntos de dados, é comum que um trabalho de reindexação seja executado por dias.
Abaixo está uma tabela que descreve os parâmetros, os padrões e os intervalos recomendados disponíveis para controlar os recursos de computação de trabalho reindexados. Você pode usar esses parâmetros para acelerar o processo (usar mais computação) ou retardar o processo (usar menos computação).
Parâmetro | Descrição | Default | Intervalo Disponível |
---|---|---|---|
QueryDelayIntervalInMilliseconds |
O atraso entre cada lote de recursos que está sendo iniciado durante o trabalho de reindexação. Um número menor acelera o trabalho enquanto um número maior o atrasa. | 500 MS (0,5 segundos) | 50 a 5000000 |
MaximumResourcesPerQuery |
O número máximo de recursos incluídos no lote de recursos a serem reindexados. | 100 | 1-5000 |
MaximumConcurrency |
O número de lotes feitos de cada vez. | 1 | 1-10 |
Se você quiser usar qualquer um dos parâmetros acima, poderá passá-los para o Parameters
recurso quando enviar a solicitação inicial POST
para iniciar um trabalho reindexar.
POST {{FHIR_URL}}/$reindex
content-type: application/fhir+json
{
"resourceType": "Parameters",
"parameter": [
{
"name": "maximumConcurrency",
"valueInteger": "3"
},
{
"name": "queryDelayIntervalInMilliseconds",
"valueInteger": "1000"
},
{
"name": "maximumNumberOfResourcesPerQuery",
"valueInteger": "1"
}
]
}
Próximas etapas
Neste artigo, você aprendeu a executar um trabalho de reindexação em seu serviço FHIR. Para saber como definir parâmetros de pesquisa personalizados, consulte
FHIR® é uma marca registrada da HL7 e é usado com a permissão da HL7.