Köra ett omindexeringsjobb i Azure API för FHIR
Det finns scenarier där du kan ha sök- eller sorteringsparametrar i Azure API för FHIR som ännu inte har indexerats. Det här scenariot är relevant när du definierar dina egna sökparametrar. Det går inte att använda den i sökningen förrän sökparametern har indexerats. Den här artikeln beskriver hur du kör ett omindexerat jobb för att indexera sökparametrar som ännu inte har indexerats i FHIR-tjänstdatabasen.
Varning
Det är viktigt att du läser hela artikeln innan du börjar. Ett omindexera jobb kan vara mycket prestandaintensivt. Den här artikeln innehåller alternativ för hur du begränsar och kontrollerar omindexeringsjobbet.
Så här kör du ett omindexera jobb
Omindexeringsjobb kan köras mot hela FHIR-tjänstdatabasen och mot specifika anpassade sökparametrar.
Kör omindexera jobb på hela FHIR-tjänstdatabasen
Om du vill köra omindexeringsjobbet använder du följande POST
anrop med den JSON-formaterade Parameters
resursen i begärandetexten:
POST {{FHIR URL}}/$reindex
{
“resourceType”: “Parameters”,
“parameter”: []
}
Lämna fältet "parameter": []
tomt (som det visas) om du inte behöver justera de resurser som allokerats till omindexeringsjobbet.
Om begäran lyckas får du statuskoden 201 Skapad utöver en Parameters
resurs i svaret.
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
}
]
}
Kör omindexeringsjobb mot specifik anpassad sökparameter
Om du vill köra omindexeringsjobbet mot en specifik anpassad sökparameter använder du följande POST
anrop med den JSON-formaterade resursen i begärandetexten Parameters
:
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.}"
}
]
}
Anteckning
Om du vill kontrollera status för ett omindexeringsjobb eller avbryta jobbet behöver du indexera om ID:t. Det här är det "id"
värde "parameter"
som returneras i svaret. I exemplet ovan skulle ID:t för omindexeringsjobbet vara 560c7c61-2c70-4c54-b86d-c53a9d29495e
.
Så här kontrollerar du status för ett omindexeringsjobb
När du har startat ett omindexeringsjobb kan du kontrollera jobbets status med hjälp av följande anrop:
GET {{FHIR URL}}/_operations/reindex/{{reindexJobId}
Ett exempelsvar:
{
"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
}
]
}
Följande information visas i svaret ovan:
totalResourcesToReindex
: Innehåller det totala antalet resurser som indexeras om i det här jobbet.resourcesSuccessfullyReindexed
: Det totala antalet resurser som redan har indexerats om i det här jobbet.progress
: Indexera om jobbets procent färdigt. Lika medresourcesSuccessfullyReindexed
/totalResourcesToReindex
x 100.status
: Anger om omindexeringsjobbet köas, körs, slutförs, misslyckas eller avbryts.resources
: Visar en lista över alla resurstyper som påverkas av omindexera jobbet."resourceReindexProgressByResource (CountReindexed of Count)": Ger omindexerat antal av det totala antalet per resurstyp. I de fall där omindexering för en viss resurstyp är i kö anges endast Antal.
'searchParams': Visar url:en för de sökparametrar som påverkas av omindexeringsjobbet.
Ta bort ett omindexera jobb
Om du behöver avbryta ett omindexera jobb använder du ett borttagningsanrop och anger jobb-ID:t för omindex:
Delete {{FHIR URL}}/_operations/reindex/{{reindexJobId}
Saker att tänka på gällande prestanda
Ett omindexera jobb kan vara ganska prestandaintensivt. Vi har implementerat vissa begränsningskontroller som hjälper dig att hantera hur ett omindexera jobb ska köras på databasen.
Anteckning
Det är inte ovanligt att ett omindexeringsjobb körs i flera dagar på stora datauppsättningar. För en databas med 30 000 000 miljoner resurser märkte vi att det tog 4–5 dagar vid 100 000 RU:er att indexera om hela databasen.
Nedan visas en tabell som beskriver tillgängliga parametrar, standardvärden och rekommenderade intervall. Du kan använda de här parametrarna för att antingen påskynda processen (använda mer beräkning) eller göra processen långsammare (använd mindre beräkning). Du kan till exempel köra omindexeringsjobbet på en låg trafiktid och öka beräkningen för att få det gjort snabbare. I stället kan du använda inställningarna för att säkerställa en låg användning av beräkning och få den att köras i dagar i bakgrunden.
Parameter | Beskrivning | Standard | Tillgängligt intervall |
---|---|---|---|
QueryDelayIntervalInMilliseconds | Fördröjningen mellan varje batch med resurser som startas under omindexeringsjobbet. Ett mindre tal påskyndar jobbet medan ett högre tal saktar ned det. | 500 MS (,5 sekunder) | 50-500000 |
MaximumResourcesPerQuery | Det maximala antalet resurser som ingår i batchen med resurser som ska indexeras om. | 100 | 1-5000 |
MaximumConcurrency | Antalet batchar som görs åt gången. | 1 | 1-10 |
targetDataStoreUsagePercentage | Gör att du kan ange vilken procentandel av datalagret som ska användas för omindexeringsjobbet. Du kan till exempel ange 50 % och se till att omindexeringsjobbet som mest använder 50 % av tillgängliga RU:er i Azure Cosmos DB. | Inte närvarande, vilket innebär att upp till 100 % kan användas. | 0-100 |
Om du vill använda någon av parametrarna ovan kan du skicka dem till parameterresursen när du startar omindexeringsjobbet.
{
"resourceType": "Parameters",
"parameter": [
{
"name": "maximumConcurrency",
"valueInteger": "3"
},
{
"name": "targetDataStoreUsagePercentage",
"valueInteger": "20"
},
{
"name": "queryDelayIntervalInMilliseconds",
"valueInteger": "1000"
},
{
"name": "maximumNumberOfResourcesPerQuery",
"valueInteger": "1"
}
]
}
Nästa steg
I den här artikeln har du lärt dig hur du startar ett omindexera jobb. Information om hur du definierar nya sökparametrar som kräver omindexera jobb finns i
FHIR® är ett registrerat varumärke som tillhör HL7 och används med tillstånd av HL7.