Sdílet prostřednictvím


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

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

Upozornění

Než začnete, je důležité přečíst si celý tento článek. Úloha přeindexování může být velmi náročná na výkon. Tento článek obsahuje možnosti, jak úlohu přeindexování omezovat a řídit.

Jak spustit úlohu přeindexování

Úlohu přeindexování je možné spustit pro celou databázi služby FHIR a pro konkrétní vlastní parametr vyhledávání.

Spuštění úlohy reindexování pro celou databázi služby FHIR

Pokud chcete spustit úlohu přeindexování, použijte následující POST volání s prostředkem formátovaným 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é k úloze přeindexování, nechte pole prázdné (jak je znázorněno na obrázku).

Pokud je požadavek úspěšný, kromě prostředku v odpovědi se zobrazí stavový kód Parameters201 Created (Vytvoření 201).

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í pro konkrétní parametr vlastního vyhledávání

Pokud chcete spustit úlohu přeindexování pro konkrétní parametr vlastního vyhledávání, použijte následující POST volání s prostředkem formátovaným 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 seperated.}"
    }
] 

}

Poznámka

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

Postup kontroly stavu úlohy přeindexování

Jakmile spustíte úlohu reindexování, můžete stav úlohy zkontrolovat pomocí následujícího volání:

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

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

Ve výše uvedené odpovědi jsou uvedené následující informace:

  • totalResourcesToReindex: Zahrnuje celkový počet prostředků, které jsou v této úloze přeindexovány.

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

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

  • status: Udává, jestli je úloha přeindexování zařazená do fronty, spuštěná, dokončená, neúspěšná nebo zrušená.

  • resources: Vypíše všechny typy prostředků ovlivněné úlohou přeindexování.

  • ResourceReindexProgressByResource (CountReindexed of Count): Poskytuje reindexovaný počet celkového počtu podle typu prostředku. V případech, kdy je přeindexování určitého typu prostředku zařazené do fronty, je k dispozici pouze počet.

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

Odstranění úlohy přeindexování

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

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

Otázky 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 se správou způsobu spuštění úlohy přeindexování ve vaší databázi.

Poznámka

U velkých datových sad není neobvyklé, že úloha přeindexování běží několik dní. U databáze s 30 000 000 miliony prostředků jsme si všimli, že přeindexování celé databáze při 100 tisících RU trvalo 4 až 5 dnů.

Níže je tabulka s přehledem dostupných parametrů, výchozích hodnot a doporučených rozsahů. Tyto parametry můžete použít buď ke zrychlení procesu (použití více výpočetních prostředků), nebo ke zpomalení procesu (méně výpočetních prostředků). Můžete například spustit úlohu přeindexování při nízké době provozu a zvýšit výpočetní prostředky, abyste to zvládli rychleji. Místo toho můžete pomocí nastavení zajistit nízké využití výpočetních prostředků a nechat je běžet několik dní na pozadí.

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

Pokud chcete použít některý z výše uvedených parametrů, můžete je předat do prostředku Parametry 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 se dozvěděli, jak spustit úlohu přeindexování. Informace o definování nových parametrů vyhledávání, které vyžadují úlohu přeindexování, najdete v tématu

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