Kör ett omindexeringsjobb i FHIR-tjänsten

Vissa scenarier kräver omindexering av sökparametrar i FHIR-tjänsten® i Azure Health Data Services. Det här scenariot är relevant när du definierar dina egna anpassade sökparametrar. Du kan inte använda den i liveproduktion förrän en sökparameter har indexerats. Den här artikeln förklarar hur man kör ett reindexjobb i din FHIR-tjänstedatabas.

Varning

Läs hela den här artikeln innan du börjar. Ett omindexeringsjobb kan vara mycket resurskrävande. I den här artikeln beskrivs alternativ för hur du begränsar och kontrollerar ett omindexeringsjobb.

Kommentar

Att köra ett reindexjobb mot specifika anpassade sökparametrar är föråldrat.

Så här kör du ett omindexeringsjobb

Du kan köra ett reindexjobb mot en hel FHIR-tjänstedatabas.

Om du vill köra ett omindexeringsjobb 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": [] 

}

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": "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": "maximumNumberOfResourcesPerQuery",
            "valueDecimal": 100.0
        },
        {
            "name": "maximumNumberOfResourcesPerWrite",
            "valueDecimal": 100.0
        }
    ]
}

Så här kontrollerar du status för ett omindexeringsjobb

När du har startat ett omindexeringsjobb kontrollerar du statusen med hjälp av följande anrop.

GET {{FHIR_URL}}/_operations/reindex/{{reindexJobId}}

Här är 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": "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": "maximumNumberOfResourcesPerQuery",
            "valueDecimal": 100.0
        },
        {
            "name": "maximumNumberOfResourcesPerWrite",
            "valueDecimal": 100.0
        }
    ]
}

Föregående svar visar följande information:

Parameter Description
totalResourcesToReindex Det totala antalet resurser som jobbet indexerar om.
resourcesSuccessfullyReindexed Det totala antalet resurser som jobbet indexerar om.
progress Omindexeringsjobbets slutförandegrad i procent. resourcesSuccessfullyReindexed Lika med dividerat med totalResourcesToReindex gånger 100.
status Status för omindexeringsjobbet. Den kan placeras i kö, köras, slutföras, misslyckas eller avbrytas.
resources Alla resurstyper som omindexeringsjobbet påverkar.
resourceReindexProgressByResource (CountReindexed of Count) Det omindexerade antalet av det totala antalet per resurstyp. Om omindexering för en viss resurstyp står i kö anges endast Antal.
searchParams URL:en för sökparametrarna som omindexeringsjobbet påverkar.
maximumNumberOfResourcesPerQuery Det maximala antalet resurser som bearbetas i en dataenhet.
maximumNumberOfResourcesPerWrite Det maximala antalet resurser som uppdateras i datalagringen i en enda transaktion.

Avbryt ett omindexeringsjobb

Om du vill avbryta ett omindexeringsjobb använder du ett anrop till DELETE och anger ID:t för omindexeringsjobbet.

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

Prestandaöverväganden

Ett omindexeringsjobb kan vara ganska resurskrävande. Även om FHIR-tjänsten automatiskt skalar backend-distribuerad beräkningsinfrastruktur beroende på belastning, kan en reindexering ändå påverka API-operationerna. Om detta inte är acceptabelt kan reindex-beräkningsförbrukningen strypas genom att minska skrivtransaktionsstorleken som styrs av maximumNumberOfResourcesPerWrite. En annan aspekt är resursstorlek som påverkar mängden minne som krävs för att hantera en enda skrivtransaktion, och styrs av samma maximumNumberOfResourcesPerWrite. Standardvärdet för maximumNumberOfResourcesPerWrite är 1000. Du kan ställa in mellan 1 och 5000. Minska till 1 (en resurs per skrivning) för att hantera mycket stora resurser eller för att begränsa omindexeringen.

Exempelbegäran med parametern:

POST {{FHIR_URL}}/$reindex
content-type: application/fhir+json
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "maximumNumberOfResourcesPerWrite",
      "valueInteger": 1
    }
  ]
}

Kommentar

Det är inte ovanligt att ett omindexeringsjobb på stora datauppsättningar körs i flera dagar.

Nästa steg

I den här artikeln har du lärt dig hur du genomför ett omindexeringsjobb i din FHIR-tjänst. Information om hur du definierar anpassade sökparametrar finns i

Kommentar

FHIR® är ett registrerat varumärke som tillhör HL7 och används med tillstånd av HL7.