Ausführen eines Neuindizierungsauftrags
Es gibt Szenarien, in denen Sie möglicherweise Suchparameter im FHIR-Dienst in Azure Health Data Services haben, die noch nicht indiziert wurden. Dieses Szenario ist relevant, wenn Sie Ihre eigenen benutzerdefinierten Suchparameter definieren. Bis der Suchparameter indiziert ist, kann er nicht in der Liveproduktion verwendet werden. In diesem Artikel wird beschrieben, wie Sie einen Neuindizierungsauftrag ausführen, um benutzerdefinierte Suchparameter zu indizieren, die noch nicht in Ihrer FHIR-Dienstdatenbank indiziert wurden.
Warnung
Es ist wichtig, dass Sie den ganzen Artikel lesen, bevor Sie beginnen. Ein Neuindizierungsauftrag kann sehr leistungsintensiv sein. In diesem Artikel werden Optionen zum Drosseln und Steuern eines Neuindizierungsauftrags erläutert.
Ausführen eines Auftrags zum Neuindizieren
Der Neuindizierungsauftrag kann für die gesamte FHIR-Dienstdatenbank und für einen bestimmten benutzerdefinierten Suchparameter ausgeführt werden.
Ausführen eines Neuindizierungsauftrags für die gesamte FHIR-Dienstdatenbank
Verwenden Sie zum Ausführen des Auftrags für die erneute Indizierung den folgenden POST
Aufruf mit der im JSON-Format formatierten Parameters
Ressource im Anforderungstext:
POST {{FHIR_URL}}/$reindex
content-type: application/fhir+json
{
"resourceType": "Parameters",
"parameter": []
}
Lassen Sie das "parameter": []
Feld leer (wie gezeigt), wenn Sie die Ressourcen, die dem Neuindizierungsauftrag zugeordnet sind, nicht optimieren müssen.
Wenn die Anforderung erfolgreich ist, erhalten Sie zusätzlich zu einer Ressource in der Antwort den Parameters
Code 201 Created status.
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
}
]
}
Ausführen eines Neuindizierungsauftrags für einen bestimmten benutzerdefinierten Suchparameter
Verwenden Sie den folgenden POST
Aufruf mit der im JSON-Format formatierten Parameters
Ressource im Anforderungstext, um einen Neuindizierungsauftrag für einen bestimmten benutzerdefinierten Suchparameter auszuführen:
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.}"
}
]
}
Hinweis
Um die status eines Neuindizierungsauftrags zu überprüfen oder den Auftrag abzubrechen, benötigen Sie die Neuindizierungs-ID. Dies ist die "id"
in dem in der "parameter"
Antwort zurückgegebenen Wert. Im obigen Beispiel wäre die ID für den Neuindizierungsauftrag 560c7c61-2c70-4c54-b86d-c53a9d29495e
.
Überprüfen des Status eines Neuindizierungsauftrags
Nachdem Sie einen Neuindizierungsauftrag gestartet haben, können Sie den Status des Auftrags mithilfe des folgenden Aufrufs überprüfen:
GET {{FHIR_URL}}/_operations/reindex/{{reindexJobId}}
Beispielantwort:
{
"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
}
]
}
Die folgenden Informationen werden in der obigen Antwort angezeigt:
totalResourcesToReindex
: Enthält die Gesamtanzahl der Ressourcen, die in diesem Auftrag neu indiziert werden.resourcesSuccessfullyReindexed
: Die Gesamtanzahl der Ressourcen, die bereits in diesem Auftrag neu indiziert wurden.progress
: Auftrag in Prozent abgeschlossen neu indizieren.resourcesSuccessfullyReindexed
/totalResourcesToReindex
Entspricht x 100.status
: Gibt an, wenn der Neuindizierungsauftrag in die Warteschlange eingereiht, ausgeführt, abgeschlossen, fehlgeschlagen oder abgebrochen wird.resources
: Listet alle Ressourcentypen auf, die vom Neuindizierungsauftrag betroffen sind.'resourceReindexProgressByResource (CountReindexed of Count)': Stellt die neu indizierte Anzahl der Gesamtanzahl pro Ressourcentyp bereit. In Fällen, in denen die erneute Indizierung für einen bestimmten Ressourcentyp in die Warteschlange eingereiht wird, wird nur Count bereitgestellt.
'searchParams': Listet die URL der Suchparameter auf, die vom Neuindizierungsauftrag betroffen sind.
Löschen eines Neuindizierungsauftrags
Wenn Sie einen Neuindizierungsauftrag abbrechen müssen, verwenden Sie einen DELETE
Aufruf, und geben Sie die Auftrags-ID für die erneute Indizierung an:
DELETE {{FHIR URL}}/_operations/reindex/{{reindexJobId}}
Überlegungen zur Leistung
Ein Neuindizierungsauftrag kann ziemlich leistungsintensiv sein. Der FHIR-Dienst bietet einige Drosselungssteuerelemente, mit denen Sie die Ausführung eines Neuindizierungsauftrags für Ihre Datenbank verwalten können.
Hinweis
Es ist bei großen Datasets nicht ungewöhnlich, dass ein Neuindizierungsauftrag über Tage ausgeführt wird.
Im Folgenden finden Sie eine Tabelle mit den verfügbaren Parametern, Standardwerten und empfohlenen Bereichen zum Steuern der Neuindizierung von Computeressourcen für Aufträge. Sie können diese Parameter verwenden, um den Prozess entweder zu beschleunigen (mehr Compute) oder den Prozess zu verlangsamen (weniger Computeaufwand).
Parameter | Beschreibung | Standard | Verfügbarer Bereich |
---|---|---|---|
QueryDelayIntervalInMilliseconds |
Die Verzögerung zwischen jedem Batch von Ressourcen, die während des Neuindizierungsauftrags gestartet werden. Eine kleinere Zahl beschleunigt den Auftrag, während eine größere Zahl ihn verlangsamt. | 500 ms (0,5 Sekunden) | 50 bis 500000 |
MaximumResourcesPerQuery |
Die maximale Anzahl von Ressourcen, die im Batch der Ressourcen zur Neuindizierung enthalten sind. | 100 | 1–5000 |
MaximumConcurrency |
Die Anzahl der Batches, die gleichzeitig ausgeführt werden. | 1 | 1 - 10 |
Wenn Sie einen der oben genannten Parameter verwenden möchten, können Sie sie an die Parameters
Ressource übergeben, wenn Sie die anfängliche POST
Anforderung zum Starten eines Neuindizierungsauftrags senden.
POST {{FHIR_URL}}/$reindex
content-type: application/fhir+json
{
"resourceType": "Parameters",
"parameter": [
{
"name": "maximumConcurrency",
"valueInteger": "3"
},
{
"name": "queryDelayIntervalInMilliseconds",
"valueInteger": "1000"
},
{
"name": "maximumNumberOfResourcesPerQuery",
"valueInteger": "1"
}
]
}
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie Sie einen Neuindizierungsauftrag in Ihrem FHIR-Dienst ausführen. Informationen zum Definieren benutzerdefinierter Suchparameter finden Sie unter
FHIR® ist eine eingetragene Marke von HL7 und wird mit Genehmigung von HL7 verwendet.