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.