Sdílet prostřednictvím


Spuštění úlohy přeindexování v rozhraní Azure API for FHIR

Důležité

Rozhraní Azure API for FHIR bude vyřazeno 30. září 2026. Postupujte podle strategií migrace a do tohoto data přejděte na službu FHIR® služby Azure Health Data Services. Vzhledem k vyřazení rozhraní Azure API for FHIR nebudou nová nasazení od 1. dubna 2025 povolena. Služba FHIR služby Azure Health Data Services je vyvinutá verze rozhraní Azure API for FHIR, která zákazníkům umožňuje spravovat služby FHIR, DICOM a MedTech s integrací do jiných služeb Azure.

Existují scénáře, ve kterých můžete mít parametry vyhledávání nebo řazení v rozhraní Azure API for FHIR®, které ještě nebyly indexovány. Tento scénář je relevantní při definování vlastních parametrů hledání. Dokud se parametr vyhledávání neindexuje, nejde ho použít při hledání. Tento článek popisuje, jak spustit úlohu přeindexování indexu indexování parametrů hledání v databázi služby FHIR.

Upozorňující

Než začnete, přečtěte si celý článek. Úloha reindexování může být velmi náročná na výkon. Tento článek obsahuje možnosti omezení a řízení úlohy přeindexování.

Spuštění úlohy přeindexování

Úlohu přeindexování lze spustit pro celou databázi služby FHIR a s konkrétními vlastními parametry hledání.

Spuštění úlohy přeindexování v celé databázi služby FHIR

Pokud chcete spustit úlohu přeindexování, použijte následující POST volání s prostředkem ve formátu Parameters JSON v textu požadavku.

POST {{FHIR URL}}/$reindex 

{ 

“resourceType”: “Parameters”,  

“parameter”: [] 

}

"parameter": [] Pokud nepotřebujete upravovat prostředky přidělené úloze přeindexování, nechte pole prázdné (jak je znázorněno).

Pokud je požadavek úspěšný, obdržíte kromě Parameters prostředku v odpovědi kromě prostředku stavový kód 201, jako v následujícím příkladu.

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
    }
  ]
}

Spuštění úlohy přeindexování s konkrétním parametrem vlastního vyhledávání

Pokud chcete spustit úlohu přeindexování s konkrétním parametrem vlastního vyhledávání, použijte následující POST volání s prostředkem ve formátu Parameters JSON v textu požadavku.

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

}

Poznámka:

Pokud chcete zkontrolovat stav úlohy reindexování nebo zrušit úlohu, budete potřebovat ID přeindexování. Jedná se o "id" hodnotu vrácenou "parameter" v odpovědi. V předchozím příkladu by ID pro úlohu přeindexování bylo 560c7c61-2c70-4c54-b86d-c53a9d29495e.

Postup kontroly stavu přeindexování úlohy

Jakmile spustíte úlohu přeindexování, můžete pomocí následujícího volání zkontrolovat stav úlohy.

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

Tady je příklad odpovědi.

{
    "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
        }
    ]
}

V odpovědi se zobrazí následující informace.

  • totalResourcesToReindex: Zahrnuje celkový počet prostředků, které se v této úloze přeindexují.

  • resourcesSuccessfullyReindexed: Celkový počet prostředků, které již byly v této úloze přeindexovány.

  • progress: Přeindexovat procento dokončení úlohy. Vypočítá se jako resourcesSuccessfullyReindexed/totalResourcesToReindex x 100.

  • status: Stavy, pokud je úloha přeindexování zařazena do fronty, spuštěna, dokončena, selhala nebo zrušena.

  • resources: Zobrazí seznam všech typů prostředků ovlivněných úlohou přeindexování.

  • resourceReindexProgressByResource (CountReindexed of Count): Poskytuje přeindexovaný počet celkového počtu na typ prostředku. V případech, kdy je přeindexování pro určitý typ prostředku zařazeno do fronty, je zadán pouze počet.

  • searchParams: Zobrazí adresu URL parametrů hledání ovlivněných úlohou přeindexování.

Odstranění přeindexovací úlohy

Pokud potřebujete zrušit úlohu přeindexování, použijte volání delete a zadejte ID úlohy přeindexování:

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

Důležité informace o výkonu

Úloha přeindexování může být poměrně náročná na výkon. Implementovali jsme některé ovládací prvky omezování, které vám pomůžou spravovat způsob, jakým se úloha přeindexování spouští ve vaší databázi.

Poznámka:

U velkých datových sad není neobvyklé, že se úloha přeindexování spustí po dobu dnů. U databáze s 30 000 000 prostředky jsme si všimli, že přeindexování celé databáze trvalo 4 až 5 dnů v 100 000 jednotkách žádostí (RU).

Následuje tabulka s popisem dostupných parametrů, výchozích hodnot a doporučených rozsahů. Pomocí těchto parametrů můžete proces zrychlit (použít více výpočetních prostředků) nebo zpomalit proces (použít méně výpočetních prostředků). Můžete například spustit úlohu přeindexování v době nízkého provozu a zvýšit výpočetní kapacitu, abyste ji mohli rychleji provést. Nastavení můžete také použít k zajištění nízkého využití výpočetních prostředků a jeho spuštění po dobu dnů na pozadí.

Parametr Popis Výchozí Dostupný rozsah
QueryDelayIntervalInMilliseconds Zpoždění mezi jednotlivými dávkami prostředků, které se spustí během přeindexované úlohy. Menší číslo zrychluje úlohu, zatímco vyšší číslo ji zpomalí. 500 MS (,5 sekundy) 50-500000
MaximumResourcesPerQuery Maximální počet prostředků zahrnutých do dávky prostředků, které se mají přeindexovat. 100 1-5000
MaximumConcurrency Počet dávek provedených najednou. 0 1-10
targetDataStoreUsagePercentage Umožňuje určit procento úložiště dat, které se má použít pro úlohu přeindexování. Můžete například zadat 50 % a zajistit, aby úloha přeindexování používala ve službě Azure Cosmos DB maximálně 50 % dostupných RU. Není k dispozici, což znamená, že lze použít až 100 %. 0–100

Pokud chcete použít některý z předchozích parametrů, můžete je předat do prostředku Parameters při spuštění úlohy přeindexování.

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "maximumConcurrency",
      "valueInteger": "3"
    },
    {
      "name": "targetDataStoreUsagePercentage",
      "valueInteger": "20"
    },
    {
      "name": "queryDelayIntervalInMilliseconds",
      "valueInteger": "1000"
    },
    {
      "name": "maximumNumberOfResourcesPerQuery",
      "valueInteger": "1"
    }
  ]
}

Další kroky

V tomto článku jste zjistili, jak spustit úlohu přeindexování. Informace o definování nových parametrů hledání, které vyžadují úlohu přeindexování, najdete v tématu .

Poznámka:

FHIR® je registrovaná ochranná známka HL7 a používá se s povolením HL7.