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.