Ausführen eines Neuindizierungsauftrags in Azure API for FHIR
Wichtig
Azure API for FHIR wird am 30. September 2026 eingestellt. Folgen Sie den Migrationsstrategien, um bis zu diesem Datum zum Azure Health Data Services-FHIR®-Dienst zu wechseln. Aufgrund der Einstellung von Azure API for FHIR werden neue Bereitstellungen ab dem 1. April 2025 nicht zugelassen. Der Azure Health Data Services-FHIR-Dienst ist die weiterentwickelte Version der Azure-API für FHIR, mit der Kundschaft FHIR-, DICOM- und Medizintechnikdienste mit Integrationen in andere Azure-Dienste verwalten kann.
Es gibt Szenarien, in denen Sie möglicherweise Such- oder Sortierparameter in der Azure-API für FHIR® haben, die noch nicht indiziert wurden. Dieses Szenario ist relevant, wenn Sie Ihre eigenen Suchparameter definieren. Solange der Suchparameter nicht indiziert wurde, kann er nicht in einer Suche verwendet werden. In diesem Artikel wird beschrieben, wie Sie einen Neuindizierungsauftrag zum Indizieren von Suchparametern in Ihrer FHIR-Dienstdatenbank ausführen.
Warnung
Es ist wichtig, dass Sie den ganzen Artikel lesen, bevor Sie beginnen. Ein Neuindizierungsauftrag kann sehr leistungsintensiv sein. Dieser Artikel enthält Optionen zum Drosseln und Steuern des Neuindizierungsauftrags.
Ausführen eines Auftrags zum Neuindizieren
Ein Neuindizierungsauftrag kann für die gesamte FHIR-Dienstdatenbank und für bestimmte benutzerdefinierte Suchparameter ausgeführt werden.
Ausführen eines Neuindizierungsauftrags für die gesamte FHIR-Dienstdatenbank
Verwenden Sie zum Ausführen eines Neuindizierungsauftrags den folgenden POST
Aufruf mit der JSON-formatierten Parameters
Ressource im Anforderungstext.
POST {{FHIR URL}}/$reindex
{
“resourceType”: “Parameters”,
“parameter”: []
}
Lassen Sie das "parameter": []
Feld leer (wie dargestellt), wenn Sie die ressourcen, die dem Neuindizierungsauftrag zugeordnet sind, nicht optimieren müssen.
Wenn die Anforderung erfolgreich ist, erhalten Sie zusätzlich zu einer Parameters
Ressource in der Antwort einen Statuscode "201 Erstellt", wie im folgenden Beispiel gezeigt.
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": "\"4c0049cd-0000-0100-0000-607dc5a90000\""
},
"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
Um einen Neuindexauftrag für einen bestimmten benutzerdefinierten Suchparameter auszuführen, verwenden Sie den folgenden POST
Aufruf mit der JSON-formatierten Parameters
Ressource im Anforderungstext.
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 seperated.}"
}
]
}
Hinweis
Um den Status eines Neuindizierungsauftrags zu überprüfen oder den Auftrag abzubrechen, benötigen Sie die Neuindizierungs-ID. Dies ist der "id"
in der "parameter"
Antwort zurückgegebene Wert. Im vorherigen Beispiel lautet 560c7c61-2c70-4c54-b86d-c53a9d29495e
die ID für den Neuindexauftrag .
Ü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}
Hier sehen Sie eine 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}}h"
},
{
"name": "queryDelayIntervalInMilliseconds",
"valueDecimal": 500.0
},
{
"name": "maximumNumberOfResourcesPerQuery",
"valueDecimal": 100.0
}
]
}
Die folgenden Informationen werden in der Antwort angezeigt.
totalResourcesToReindex
: Enthält die Gesamtanzahl der Ressourcen, die in diesem Auftrag neu indiziert werden.resourcesSuccessfullyReindexed
: Die Gesamtanzahl der Ressourcen, die in diesem Auftrag bereits neu indiziert wurden.progress
: Auftragsprozent abgeschlossen neu indizieren. Berechnet alsresourcesSuccessfullyReindexed
/totalResourcesToReindex
x 100.status
: Gibt an, ob der Neuindizierungsauftrag in die Warteschlange gestellt, ausgeführt, abgeschlossen, fehlgeschlagen oder abgebrochen wird.resources
: Listet alle ressourcentypen auf, die vom Neuindizierungsauftrag betroffen sind.resourceReindexProgressByResource (CountReindexed of Count)
: Stellt eine neu indizierte Anzahl der Gesamtanzahl pro Ressourcentyp bereit. In Fällen, in denen die Neuindizierung für einen bestimmten Ressourcentyp in die Warteschlange gestellt wird, wird nur Count bereitgestellt.searchParams
: Listet die URL der Suchparameter auf, die von dem Neuindizierungsauftrag betroffen sind.
Löschen eines Neuindizierungsauftrags
Wenn Sie einen Neuindizierungsauftrag abbrechen müssen, verwenden Sie einen Löschaufruf, und geben Sie die Neuindizierungsauftrags-ID an:
Delete {{FHIR URL}}/_operations/reindex/{{reindexJobId}
Überlegungen zur Leistung
Ein Neuindizierungsauftrag kann ziemlich leistungsintensiv sein. Wir haben einige Einschränkungssteuerelemente implementiert, mit denen Sie verwalten können, wie ein Neuindizierungsauftrag in Ihrer Datenbank ausgeführt wird.
Hinweis
Es ist bei großen Datasets nicht ungewöhnlich, dass ein Neuindizierungsauftrag über Tage ausgeführt wird. Für eine Datenbank mit 30.000.000 Ressourcen haben wir festgestellt, dass es 4-5 Tage bei 100.000 Anforderungseinheiten (RUs) dauerte, um die gesamte Datenbank neu indizieren zu können.
Es folgt eine Tabelle, in der die verfügbaren Parameter, Standardwerte und empfohlenen Bereiche aufgeführt sind. Sie können diese Parameter verwenden, um den Prozess zu beschleunigen (mehr Computeresssourcen verwenden) oder um ihn zu verlangsamen (weniger Computeressourcen verwenden). Beispielsweise können Sie den Neuindizierungsauftrag zu einer niedrigen Datenverkehrszeit ausführen und die Berechnung erhöhen, um sie schneller zu erledigen. Sie können auch die Einstellungen verwenden, um sicherzustellen, dass die Berechnung niedrig ist und sie tagelang im Hintergrund ausgeführt wird.
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 höhere Zahl sie verlangsamt. | 500 ms (0,5 Sekunden) | 50–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 |
targetDataStoreUsagePercentage | Ermöglicht Ihnen, anzugeben, welcher Prozentsatz Ihres Datenspeichers für den Neuindizierungsauftrag verwendet werden soll. Beispielsweise könnten Sie 50 % angeben, was sicherstellen würde, dass der Neuindizierungsauftrag maximal 50 % der verfügbaren RUs in Azure Cosmos DB verwenden würde. | Nicht angegeben, was bedeutet, dass bis zu 100 % verwendet werden können. | 0–100 |
Wenn Sie einen der vorherigen Parameter verwenden möchten, können Sie diese beim Starten des Neuindizierungsauftrags an die Parameterressource übergeben.
{
"resourceType": "Parameters",
"parameter": [
{
"name": "maximumConcurrency",
"valueInteger": "3"
},
{
"name": "targetDataStoreUsagePercentage",
"valueInteger": "20"
},
{
"name": "queryDelayIntervalInMilliseconds",
"valueInteger": "1000"
},
{
"name": "maximumNumberOfResourcesPerQuery",
"valueInteger": "1"
}
]
}
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie Sie einen Neuindizierungsauftrag starten. Informationen zum Definieren neuer Suchparameter, die den Neuindizierungsauftrag erfordern, finden Sie unter
Hinweis
FHIR® ist eine eingetragene Marke von HL7 und wird mit Genehmigung von HL7 verwendet.