Udostępnij za pośrednictwem


Uruchamianie zadania ponownego indeksu

Istnieją scenariusze, w których możesz mieć parametry wyszukiwania w usłudze FHIR® w usługach Azure Health Data Services, które nie zostały jeszcze indeksowane. Ten scenariusz jest istotny podczas definiowania własnych niestandardowych parametrów wyszukiwania. Dopóki parametr wyszukiwania nie zostanie zaindeksowany, nie będzie można go używać w środowisku produkcyjnym na żywo. W tym artykule opisano sposób uruchamiania zadania ponownego indeksowania w celu indeksowania dowolnych niestandardowych parametrów wyszukiwania w bazie danych usługi FHIR.

Ostrzeżenie

Przed rozpoczęciem pracy należy przeczytać cały artykuł. Zadanie ponownego indeksu może być bardzo intensywnie obciążane wydajnością. W tym artykule omówiono opcje ograniczania przepustowości i kontrolowania zadania ponownego indeksowania.

Jak uruchomić zadanie ponownego indeksowania

Zadanie ponownego indeksowania można wykonać względem całej bazy danych usługi FHIR i względem określonych niestandardowych parametrów wyszukiwania.

Uruchamianie zadania ponownego indeksowania w całej bazie danych usługi FHIR

Aby uruchomić zadanie ponownego indeksowania, użyj następującego POST wywołania z zasobem sformatowanym Parameters w formacie JSON w treści żądania.

POST {{FHIR_URL}}/$reindex 
content-type: application/fhir+json
{ 

"resourceType": "Parameters",  

"parameter": [] 

}

"parameter": [] Pozostaw pole puste (jak pokazano), jeśli nie musisz dostosowywać zasobów przydzielonych do zadania ponownego indeksowania.

Jeśli żądanie zakończy się pomyślnie, otrzymasz kod stanu 201 201 oprócz Parameters zasobu w odpowiedzi.

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

Uruchamianie zadania ponownego indeksu względem określonego niestandardowego parametru wyszukiwania

Aby uruchomić zadanie ponownego indeksowania względem określonego niestandardowego parametru wyszukiwania, użyj następującego POST wywołania z zasobem sformatowanym Parameters w formacie JSON w treści żądania.

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

}

Uwaga

Aby sprawdzić stan lub anulować zadanie ponownego indeksowania, potrzebny jest identyfikator ponownego indeksowania. Jest to "id" element przenoszony w "parameter" wartości odpowiedzi. W poprzednim przykładzie identyfikator zadania ponownego indeksowania to 560c7c61-2c70-4c54-b86d-c53a9d29495e.

Jak sprawdzić stan zadania ponownego indeksowania

Po uruchomieniu zadania ponownego indeksowania możesz sprawdzić stan zadania przy użyciu następującego wywołania.

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

Poniżej przedstawiono przykładową odpowiedź.

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

Następujące informacje są wyświetlane w poprzedniej odpowiedzi:

  • totalResourcesToReindex: obejmuje łączną liczbę zasobów, które są ponownie indeksowane w tym zadaniu.

  • resourcesSuccessfullyReindexed: całkowita liczba zasobów, które zostały już ponownie zindeksowane w tym zadaniu.

  • progress: Procent wykonania zadania ponownego indeksu. Równa się resourcesSuccessfullyReindexed/totalResourcesToReindex x 100.

  • status: określa, czy zadanie ponownego indeksu jest w kolejce, uruchomione, ukończone, zakończone, zakończone lub anulowane.

  • resources: Wyświetla listę wszystkich typów zasobów, których dotyczy zadanie ponownego indeksu.

  • "resourceReindexProgressByResource (CountReindexed of Count)": Udostępnia ponownie indeksowaną liczbę łącznej liczby według typu zasobu. W przypadkach, gdy ponowne indeksowanie dla określonego typu zasobu jest kolejkowane, podano tylko liczbę.

  • "searchParams": wyświetla adres URL parametrów wyszukiwania, których dotyczy zadanie ponownego indeksowania.

Usuwanie zadania ponownego indeksowania

Jeśli musisz anulować zadanie ponownego indeksowania, użyj DELETE wywołania i określ identyfikator zadania ponownego indeksowania.

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

Zagadnienia dotyczące wydajności

Zadanie ponownego indeksu może być dość intensywnie obciążane wydajnością. Usługa FHIR oferuje kontrolki ograniczania przepustowości, aby ułatwić zarządzanie uruchamianiem zadania ponownego indeksowania w bazie danych.

Uwaga

Nie jest rzadkością w przypadku dużych zestawów danych dla zadania ponownego indeksowania, które ma być uruchamiane przez kilka dni.

Poniżej znajduje się tabela przedstawiająca dostępne parametry, wartości domyślne i zalecane zakresy do kontrolowania zasobów obliczeniowych zadania ponownego indeksowania. Możesz użyć tych parametrów, aby przyspieszyć proces (użyć większej ilości zasobów obliczeniowych) lub spowolnić proces (użyj mniejszej ilości zasobów obliczeniowych).

Parametr Opis Wartość domyślna Dostępny zakres
QueryDelayIntervalInMilliseconds Opóźnienie między każdą partią zasobów uruchamianych podczas zadania ponownego indeksowania. Mniejsza liczba przyspiesza zadanie, gdy większa liczba spowalnia ją. 500 MS (5 sekund) Od 50 do 500000
MaximumResourcesPerQuery Maksymalna liczba zasobów uwzględnionych w partii do ponownego indeksowania. 100 1-5000
MaximumConcurrency Liczba partii wykonanych jednocześnie. 1 1-10

Jeśli chcesz użyć dowolnego z powyższych parametrów, możesz przekazać je do Parameters zasobu podczas wysyłania początkowego POST żądania w celu uruchomienia zadania ponownego indeksowania.


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

Następne kroki

W tym artykule przedstawiono sposób wykonywania zadania ponownego indeksowania w usłudze FHIR. Aby dowiedzieć się, jak definiować parametry wyszukiwania niestandardowego, zobacz

Uwaga

FHIR® jest zastrzeżonym znakiem towarowym HL7 i jest używany z uprawnieniem HL7.