Esecuzione di un processo reindicizzazione
Esistono scenari in cui potrebbero essere presenti parametri di ricerca nel servizio FHIR® in Servizi dati di integrità di Azure che devono ancora essere indicizzati. Questo scenario è rilevante quando si definiscono i propri parametri di ricerca personalizzati. Finché non viene indicizzato un parametro di ricerca, non può essere usato nell'ambiente di produzione in tempo reale. Questo articolo illustra come eseguire un processo di reindicizzazione per indicizzare tutti i parametri di ricerca personalizzati nel database del servizio FHIR.
Avviso
È importante leggere l'intero articolo prima di iniziare. Un processo reindicizzazione può richiedere prestazioni molto elevate. Questo articolo illustra le opzioni per limitare e controllare un processo di reindicizzazione.
Come eseguire un processo di reindicizzazione
Un processo di reindicizzazione può essere eseguito su un intero database del servizio FHIR e su parametri di ricerca personalizzati specifici.
Eseguire un processo di reindicizzazione nell'intero database del servizio FHIR
Per eseguire un processo di reindicizzazione, usare la chiamata seguente POST
con la risorsa in Parameters
formato JSON nel corpo della richiesta.
POST {{FHIR_URL}}/$reindex
content-type: application/fhir+json
{
"resourceType": "Parameters",
"parameter": []
}
Lasciare vuoto il "parameter": []
campo (come illustrato) se non è necessario modificare le risorse allocate al processo di reindicizzazione.
Se la richiesta ha esito positivo, viene visualizzato un codice di stato creato 201 oltre a una Parameters
risorsa nella risposta.
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
}
]
}
Eseguire un processo di reindicizzazione su un parametro di ricerca personalizzato specifico
Per eseguire un processo di reindicizzazione su un parametro di ricerca personalizzato specifico, usare la chiamata seguente POST
con la risorsa in Parameters
formato JSON nel corpo della richiesta.
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
Per controllare lo stato di o annullare un processo di reindicizzazione, è necessario l'ID reindicizzazione. Si tratta dell'oggetto "id"
trasportato nel "parameter"
valore della risposta. Nell'esempio precedente, l'ID per il processo reindicizzazione sarà 560c7c61-2c70-4c54-b86d-c53a9d29495e
.
Come controllare lo stato di un processo di reindicizzazione
Dopo aver avviato un processo di reindicizzazione, è possibile controllare lo stato del processo usando la chiamata seguente.
GET {{FHIR_URL}}/_operations/reindex/{{reindexJobId}}
Di seguito è riportata una risposta di esempio.
{
"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
}
]
}
Le informazioni seguenti sono illustrate nella risposta precedente:
totalResourcesToReindex
: include il numero totale di risorse da reindicizzare in questo processo.resourcesSuccessfullyReindexed
: numero totale di risorse che sono già state reindicizzare in questo processo.progress
: percentuale di completamento del processo reindicizzazione.resourcesSuccessfullyReindexed
/totalResourcesToReindex
Uguale a x 100.status
: indica se il processo di reindicizzazione viene accodato, in esecuzione, completato, non riuscito o annullato.resources
: elenca tutti i tipi di risorse interessati dal processo di reindicizzazione.'resourceReindexProgressByResource (CountReindexed of Count)': fornisce un conteggio reindiczzato del conteggio totale, per tipo di risorsa. Nei casi in cui la reindicizzazione per un tipo di risorsa specifico viene accodata, viene fornito solo Count.
'searchParams': elenca l'URL dei parametri di ricerca interessati dal processo di reindicizzazione.
Eliminare un processo reindicizzazione
Se è necessario annullare un processo di reindicizzazione, usare una DELETE
chiamata e specificare l'ID processo reindicizzazione.
DELETE {{FHIR URL}}/_operations/reindex/{{reindexJobId}}
Considerazioni sulle prestazioni
Un processo reindicizzazione può richiedere prestazioni elevate. Il servizio FHIR offre controlli di limitazione per gestire il modo in cui viene eseguito un processo di reindicizzazione nel database.
Nota
Non è raro che nei set di dati di grandi dimensioni venga eseguito un processo di reindicizzazione per giorni.
Di seguito è riportata una tabella che delinea i parametri, le impostazioni predefinite e gli intervalli consigliati disponibili per controllare le risorse di calcolo dei processi di reindicizzazione. È possibile usare questi parametri per velocizzare il processo (usare più calcolo) o rallentare il processo (usare meno calcolo).
Parametro | Descrizione | Default | Intervallo disponibile |
---|---|---|---|
QueryDelayIntervalInMilliseconds |
Ritardo tra ogni batch di risorse che viene avviata durante il processo di reindicizzazione. Un numero più piccolo accelera il processo mentre un numero maggiore lo rallenta. | 500 MS (5 secondi) | Da 50 a 500000 |
MaximumResourcesPerQuery |
Numero massimo di risorse incluse nel batch da reindicizzare. | 100 | 1-5000 |
MaximumConcurrency |
Numero di batch eseguiti alla volta. | 1 | 1-10 |
Se si vuole usare uno dei parametri precedenti, è possibile passarli alla Parameters
risorsa quando si invia la richiesta iniziale POST
per avviare un processo di reindicizzazione.
POST {{FHIR_URL}}/$reindex
content-type: application/fhir+json
{
"resourceType": "Parameters",
"parameter": [
{
"name": "maximumConcurrency",
"valueInteger": "3"
},
{
"name": "queryDelayIntervalInMilliseconds",
"valueInteger": "1000"
},
{
"name": "maximumNumberOfResourcesPerQuery",
"valueInteger": "1"
}
]
}
Passaggi successivi
In questo articolo si è appreso come eseguire un processo di reindicizzazione nel servizio FHIR. Per informazioni su come definire i parametri di ricerca personalizzati, vedere
Nota
FHIR® è un marchio registrato di HL7 ed è usato con l'autorizzazione di HL7.