Dela via


Köra ett omindexeringsjobb i Azure API för FHIR

Viktigt!

Azure API för FHIR avvecklas den 30 september 2026. Följ migreringsstrategierna för att övergå till Azure Health Data Services FHIR-tjänsten® senast det datumet. På grund av tillbakadragandet av Azure API för FHIR tillåts inte nya distributioner från och med den 1 april 2025. Azure Health Data Services FHIR-tjänsten är den utvecklade versionen av Azure API för FHIR som gör det möjligt för kunder att hantera FHIR-, DICOM- och MedTech-tjänster med integreringar i andra Azure-tjänster.

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 omindexera jobb för att indexera sökparametrar i FHIR-tjänstdatabasen.

Varning

Det är viktigt att du läser hela den här 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

Ett omindexeringsjobb kan köras mot och hela FHIR-tjänstdatabasen och mot specifika anpassade sökparametrar.

Kör omindexera jobb på hela FHIR-tjänstdatabasen

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 

{ 

“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, som i följande exempel.

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öra omindexeringsjobb mot specifik anpassad sökparameter

Om du vill köra ett omindexeringsjobb 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 separated.}"
    }
] 

}

Kommentar

Om du vill kontrollera statusen för ett omindexeringsjobb eller avbryta jobbet behöver du indexera om ID:t. Det här är värdet "id" som "parameter" returneras i svaret. I föregående exempel 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}

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

  • totalResourcesToReindex: Innehåller det totala antalet resurser som omindexeras 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. Beräknas som resourcesSuccessfullyReindexed/totalResourcesToReindex x 100.

  • status: Anger om omindexeringsjobbet placeras i kö, 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 ett omindexerat antal av det totala antalet per resurstyp. I de fall där omindexering för en viss resurstyp placeras i kö anges endast Antal.

  • searchParams: Visar url:en för sökparametrarna 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}

Prestandaöverväganden

Ett omindexera jobb kan vara ganska prestandaintensivt. Vi har implementerat vissa begränsningskontroller som hjälper dig att hantera hur ett omindexera jobb körs i databasen.

Kommentar

Det är inte ovanligt att ett omindexeringsjobb körs i flera dagar på stora datauppsättningar. För en databas med 30 000 000 resurser märkte vi att det tog 4–5 dagar vid 100 000 enheter för begäran (RU:er) att indexera om hela databasen.

Följande är en tabell som beskriver tillgängliga parametrar, standardvärden och rekommenderade intervall. Du kan använda dessa parametrar för att antingen påskynda processen (använd mer beräkning) eller sakta ned processen (använd mindre beräkning). Du kan till exempel köra omindexeringsjobbet vid en låg trafiktid och öka beräkningen för att få det gjort snabbare. Du kan också 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 flera 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 ner 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 procent av datalagret som ska användas för omindexeringsjobbet. Du kan till exempel ange 50 % och det skulle säkerställa att omindexeringsjobbet som mest skulle använda 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 de föregående parametrarna kan du skicka dem till resursen Parametrar 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

Kommentar

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