Teilen über


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-c53a9d29495edie 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 als resourcesSuccessfullyReindexed/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.