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 separated.}"
}
]
}
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-c53a9d29495e
de 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 alsresourcesSuccessfullyReindexed
/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.