Delen via


Een taak opnieuw indexeren in Azure API for FHIR

Belangrijk

Azure API for FHIR wordt op 30 september 2026 buiten gebruik gesteld. Volg de migratiestrategieën om op die datum over te stappen naar de FHIR-service® van Azure Health Data Services. Vanwege de buitengebruikstelling van Azure API for FHIR zijn nieuwe implementaties vanaf 1 april 2025 niet toegestaan. De FHIR-service van Azure Health Data Services is de ontwikkelde versie van Azure API for FHIR waarmee klanten FHIR-, DICOM- en MedTech-services kunnen beheren met integraties in andere Azure-services.

Er zijn scenario's waarin u mogelijk zoek- of sorteerparameters hebt in de Azure API for FHIR® die nog niet zijn geïndexeerd. Dit scenario is relevant wanneer u uw eigen zoekparameters definieert. Totdat de zoekparameter is geïndexeerd, kan deze niet worden gebruikt in de zoekfunctie. In dit artikel wordt beschreven hoe u een taak voor opnieuw indexeren uitvoert om zoekparameters in uw FHIR-servicedatabase te indexeren.

Waarschuwing

Het is belangrijk dat u dit hele artikel leest voordat u aan de slag gaat. Een herindextaak kan zeer prestatieintensief zijn. Dit artikel bevat opties voor het beperken en beheren van de herindextaak.

Een herindextaak uitvoeren

Een herindextaak kan worden uitgevoerd op en volledige FHIR-servicedatabase en op basis van specifieke aangepaste zoekparameters.

De taak opnieuw indexeren uitvoeren op de volledige FHIR-servicedatabase

Als u een herindextaak wilt uitvoeren, gebruikt u de volgende POST aanroep met de met JSON opgemaakte Parameters resource in de aanvraagbody.

POST {{FHIR URL}}/$reindex 

{ 

“resourceType”: “Parameters”,  

“parameter”: [] 

}

Laat het "parameter": [] veld leeg (zoals weergegeven) als u de resources die zijn toegewezen aan de herindextaak niet hoeft aan te passen.

Als de aanvraag is geslaagd, ontvangt u een statuscode voor 201 gemaakt naast een Parameters resource in het antwoord, zoals in het volgende voorbeeld.

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
    }
  ]
}

De taak opnieuw indexeren uitvoeren op een specifieke aangepaste zoekparameter

Als u een herindextaak wilt uitvoeren op basis van een specifieke aangepaste zoekparameter, gebruikt u de volgende POST aanroep met de met JSON opgemaakte Parameters resource in de aanvraagbody.

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

}

Notitie

Als u de status van een taak opnieuw wilt indexeren of de taak wilt annuleren, hebt u de herindex-id nodig. Dit is de "id" waarde die "parameter" wordt geretourneerd in het antwoord. In het voorgaande voorbeeld is 560c7c61-2c70-4c54-b86d-c53a9d29495ede id voor de herindextaak.

De status van een taak opnieuw indexeren

Wanneer u een taak opnieuw indexeren start, kunt u de status van de taak controleren met behulp van de volgende aanroep.

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

Hieronder volgt een voorbeeld van een antwoord.

{
    "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
        }
    ]
}

De volgende informatie wordt weergegeven in het antwoord.

  • totalResourcesToReindex: Bevat het totale aantal resources dat opnieuw wordt geïndexeerd in deze taak.

  • resourcesSuccessfullyReindexed: Het totale aantal resources dat al opnieuw is geïndexeerd in deze taak.

  • progress: Indexeren van taakpercentage voltooid. Berekend als resourcesSuccessfullyReindexed/totalResourcesToReindex x 100.

  • status: Geeft aan of de taak opnieuw wordt geïndexeerd, uitgevoerd, voltooid, mislukt of geannuleerd.

  • resources: geeft een lijst weer van alle resourcetypen die worden beïnvloed door de herindextaak.

  • resourceReindexProgressByResource (CountReindexed of Count): Biedt een opnieuw geïndexeerd aantal van het totale aantal per resourcetype. In gevallen waarin opnieuw indexeren voor een specifiek resourcetype in de wachtrij wordt geplaatst, wordt alleen Aantal opgegeven.

  • searchParams: Geeft de URL weer van de zoekparameters die worden beïnvloed door de herindextaak.

Een taak opnieuw indexeren verwijderen

Als u een herindextaak wilt annuleren, gebruikt u een verwijderoproep en geeft u de taak-id opnieuw indexeren op:

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

Prestatieoverwegingen

Een herindextaak kan behoorlijk prestatie-intensief zijn. We hebben enkele beperkingsbesturingselementen geïmplementeerd om u te helpen bij het beheren van de wijze waarop een herindexeringstaak wordt uitgevoerd in uw database.

Notitie

Het is niet ongebruikelijk dat grote gegevenssets een taak opnieuw indexeren voor dagen. Voor een database met 30.000.000 resources hebben we gemerkt dat het 4-5 dagen duurde om 100.000 aanvraageenheden (RU's) om de volledige database opnieuw te indexeren.

Hieronder volgt een tabel waarin de beschikbare parameters, standaardwaarden en aanbevolen bereiken worden weergegeven. U kunt deze parameters gebruiken om het proces te versnellen (meer rekenkracht gebruiken) of het proces te vertragen (minder rekenkracht gebruiken). U kunt bijvoorbeeld de herindextaak uitvoeren op een lage tijd van het verkeer en de rekenkracht verhogen om dit sneller te doen. U kunt ook de instellingen gebruiken om een laag gebruik van rekenkracht te garanderen en deze dagen op de achtergrond uit te voeren.

Parameter Beschrijving Standaard Beschikbaar bereik
QueryDelayIntervalInMilliseconds De vertraging tussen elke batch resources die wordt gestart tijdens het opnieuw indexeren van de taak. Een kleiner getal versnelt de taak terwijl een hoger getal dit vertraagt. 500 MS (,5 seconden) 50-500000
MaximumResourcesPerQuery Het maximum aantal resources dat is opgenomen in de batch met resources die opnieuw moeten worden geïndexeerd. 100 1-5000
MaximumConcurrency Het aantal batches dat tegelijk wordt uitgevoerd. 1 1-10
targetDataStoreUsagePercentage Hiermee kunt u opgeven welk percentage van uw gegevensarchief moet worden gebruikt voor de herindexeertaak. U kunt bijvoorbeeld 50% opgeven en ervoor zorgen dat de taak voor opnieuw indexeren maximaal 50% van de beschikbare RU's in Azure Cosmos DB gebruikt. Niet aanwezig, wat betekent dat maximaal 100% kan worden gebruikt. 0-100

Als u een van de voorgaande parameters wilt gebruiken, kunt u deze doorgeven aan de resource Parameters wanneer u de taak opnieuw indexeert.

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "maximumConcurrency",
      "valueInteger": "3"
    },
    {
      "name": "targetDataStoreUsagePercentage",
      "valueInteger": "20"
    },
    {
      "name": "queryDelayIntervalInMilliseconds",
      "valueInteger": "1000"
    },
    {
      "name": "maximumNumberOfResourcesPerQuery",
      "valueInteger": "1"
    }
  ]
}

Volgende stappen

In dit artikel hebt u geleerd hoe u een taak opnieuw kunt indexeren. Zie voor meer informatie over het definiëren van nieuwe zoekparameters waarvoor de herindextaak is vereist

Notitie

FHIR® is een geregistreerd handelsmerk van HL7 en wordt gebruikt met de machtiging HL7.