Delen via


Een herindextaak uitvoeren

Er zijn scenario's waarin u mogelijk zoekparameters hebt in de FHIR-service® in Azure Health Data Services die nog moeten worden geïndexeerd. Dit scenario is relevant wanneer u uw eigen aangepaste zoekparameters definieert. Totdat een zoekparameter is geïndexeerd, kan deze niet worden gebruikt in liveproductie. In dit artikel wordt beschreven hoe u een taak voor opnieuw indexeren uitvoert om aangepaste 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. In dit artikel worden opties besproken voor het beperken en beheren van een herindextaak.

Een herindextaak uitvoeren

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

Een 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 
content-type: application/fhir+json
{ 

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

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

Een taak opnieuw indexeren op basis van 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 separated.}"
    }
] 

}

Notitie

Als u de status van een herindextaak wilt controleren of annuleren, hebt u de herindex-id nodig. Dit is de "id" waarde "parameter" van 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}}"
        },
        {
            "name": "queryDelayIntervalInMilliseconds",
            "valueDecimal": 500.0
        },
        {
            "name": "maximumNumberOfResourcesPerQuery",
            "valueDecimal": 100.0
        }
    ]
}

De volgende informatie wordt weergegeven in het voorgaande 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. resourcesSuccessfullyReindexed/totalResourcesToReindex Is gelijk aan 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': een lijst met url's van de zoekparameters die worden beïnvloed door de taak voor opnieuw indexeren.

Een taak opnieuw indexeren verwijderen

Als u een herindextaak wilt annuleren, gebruikt u een DELETE aanroep en geeft u de taak-id opnieuw indexeren op.

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

Prestatieoverwegingen

Een herindextaak kan behoorlijk prestatie-intensief zijn. De FHIR-service biedt beperkingen om te beheren hoe een herindexeringstaak wordt uitgevoerd op uw database.

Notitie

Het is niet ongebruikelijk dat grote gegevenssets een taak opnieuw indexeren voor dagen.

Hieronder ziet u een tabel met de beschikbare parameters, standaardwaarden en aanbevolen bereiken voor het beheren van rekenresources voor opnieuw indexeren van taken. U kunt deze parameters gebruiken om het proces te versnellen (meer rekenkracht gebruiken) of het proces te vertragen (minder rekenkracht gebruiken).

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 groter getal dit vertraagt. 500 MS (,5 seconden) 50 tot 500000
MaximumResourcesPerQuery Het maximum aantal resources dat in de batch is opgenomen om opnieuw te worden geïndexeerd. 100 1-5000
MaximumConcurrency Het aantal batches dat tegelijk wordt uitgevoerd. 1 1-10

Als u een van de voorgaande parameters wilt gebruiken, kunt u deze doorgeven aan de Parameters resource wanneer u de eerste POST aanvraag verzendt om een herindexeertaak te 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"
    }
  ]
}

Volgende stappen

In dit artikel hebt u geleerd hoe u een herindextaak uitvoert in uw FHIR-service. Zie voor meer informatie over het definiëren van aangepaste zoekparameters

Notitie

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