Dela via


Köra ett omindexera jobb

Det finns scenarier där du kan ha sökparametrar i FHIR-tjänsten i Azure Health Data Services som ännu inte har indexerats. Det här scenariot är relevant när du definierar dina egna anpassade sökparametrar. Förrän sökparametern har indexerats kan den inte användas i liveproduktion. Den här artikeln beskriver hur du kör ett omindexerat jobb för att indexera anpassade 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. I den här artikeln beskrivs alternativ för hur du begränsar och kontrollerar ett omindexeringsjobb.

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

"resourceType": "Parameters",  

"parameter": [] 

}

Lämna fältet "parameter": [] tomt (som det visas) om du inte behöver justera resurserna 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": "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
        }
    ]
}

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 separated.}"
    }
] 

}

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 som "parameter" 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}}"
        },
        {
            "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 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. Är lika med 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 omindexerat antal av det totala antalet per resurstyp. I de fall där omindexering för en viss resurstyp placeras i kö tillhandahålls 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 DELETE anrop 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. FHIR-tjänsten erbjuder vissa begränsningskontroller som hjälper dig att hantera hur ett omindexera jobb körs på databasen.

Anteckning

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

Nedan visas en tabell som beskriver tillgängliga parametrar, standardvärden och rekommenderade intervall för att kontrollera omindexering av jobbberäkningsresurser. 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).

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 större tal saktar ned det. 500 MS (,5 sekunder) 50 till 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

Om du vill använda någon av parametrarna ovan kan du skicka dem till resursen Parameters när du skickar den första POST begäran om att starta ett omindexeringsjobb.


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

Nästa steg

I den här artikeln har du lärt dig hur du utför ett omindexera jobb i FHIR-tjänsten. Information om hur du definierar anpassade sökparametrar finns i

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