Freigeben über


Ausführen eines Neuindizierungsauftrags

Es gibt Szenarien, in denen Sie möglicherweise Suchparameter im FHIR-Dienst® in Azure Health Data Services haben, die noch indiziert werden müssen. Dieses Szenario ist relevant, wenn Sie ihre eigenen benutzerdefinierten Suchparameter definieren. Bis ein 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 in Ihrer FHIR-Dienstdatenbank indizieren zu können.

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

Ein Neuindizierungsauftrag kann für eine 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 
content-type: application/fhir+json
{ 

"resourceType": "Parameters",  

"parameter": [] 

}

Lassen Sie das "parameter": [] Feld leer (wie dargestellt), wenn Sie die ressourcen, die dem Neuindizierungsauftrag zugeordnet sind, nicht anpassen müssen.

Wenn die Anforderung erfolgreich ist, erhalten Sie zusätzlich zu einer Parameters Ressource in der Antwort den Statuscode "201 Erstellt".

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 Neuindexauftrags 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 separated.}"
    }
] 

}

Hinweis

Um den Status zu überprüfen oder einen Neuindizierungsauftrag abzubrechen, benötigen Sie die Neuindizierungs-ID. Dies ist der "id" Wert "parameter" der Antwort. 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}}"
        },
        {
            "name": "queryDelayIntervalInMilliseconds",
            "valueDecimal": 500.0
        },
        {
            "name": "maximumNumberOfResourcesPerQuery",
            "valueDecimal": 100.0
        }
    ]
}

Die folgenden Informationen werden in der vorherigen 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. resourcesSuccessfullyReindexed/totalResourcesToReindex Entspricht 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 Neuindexauftrag abbrechen müssen, verwenden Sie einen DELETE Aufruf, und geben Sie die Neuindizierungsauftrags-ID an.

DELETE {{FHIR URL}}/_operations/reindex/{{reindexJobId}}

Überlegungen zur Leistung

Ein Neuindizierungsauftrag kann ziemlich leistungsintensiv sein. Der FHIR-Dienst bietet Drosselungssteuerelemente, um zu verwalten, 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.

Im Folgenden finden Sie eine Tabelle, in der die verfügbaren Parameter, Standardwerte und empfohlenen Bereiche zum Steuern der Neuindizierung von Auftragsberechnungsressourcen aufgeführt sind. Sie können diese Parameter verwenden, um den Prozess zu beschleunigen (mehr Compute verwenden) oder den Prozess zu verlangsamen (weniger Compute verwenden).

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 sie verlangsamt. 500 ms (0,5 Sekunden) 50 bis 500000
MaximumResourcesPerQuery Die maximale Anzahl von Ressourcen, die im Batch enthalten sind, um indiziert zu werden. 100 1–5000
MaximumConcurrency Die Anzahl der Batches, die gleichzeitig ausgeführt werden. 1 1 - 10

Wenn Sie einen der vorherigen Parameter verwenden möchten, können Sie diese beim Senden der anfänglichen POST Anforderung an die Parameters Ressource übergeben, um einen Neuindizierungsauftrag zu starten.


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 von benutzerdefinierten Suchparametern finden Sie unter

Hinweis

FHIR® ist eine eingetragene Marke von HL7 und wird mit Genehmigung von HL7 verwendet.