Поделиться через


Выполнение задания переиндексации

Существуют сценарии, в которых могут быть параметры поиска в службе FHIR® в службах данных Работоспособности Azure, которые еще не индексированы. Этот сценарий имеет значение при определении собственных параметров пользовательского поиска. Пока параметр поиска не индексируется, его нельзя использовать в динамической рабочей среде. В этой статье описывается, как запустить задание переиндексирования для индексирования любых пользовательских параметров поиска в базе данных службы FHIR.

Предупреждение

Важно, чтобы вы прочитали всю эту статью перед началом работы. Задание переиндексации может быть очень интенсивным. В этой статье рассматриваются варианты регулирования и управления заданием переиндексации.

Как выполнить задание повторной индексации

Задание переиндексации может выполняться для всей базы данных службы FHIR и для определенных настраиваемых параметров поиска.

Выполнение задания переиндексации во всей базе данных службы FHIR

Чтобы запустить задание повторной индексации, используйте следующий POST вызов с отформатированным Parameters ресурсом JSON в тексте запроса.

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

"resourceType": "Parameters",  

"parameter": [] 

}

"parameter": [] Оставьте поле пустым (как показано), если вам не нужно настраивать ресурсы, выделенные для задания переиндексации.

Если запрос выполнен успешно, вы получите код состояния 201 в дополнение к Parameters ресурсу в ответе.

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

Выполнение задания переиндексации для определенного настраиваемого параметра поиска

Чтобы запустить задание переиндексации для определенного настраиваемого параметра поиска, используйте следующий POST вызов с отформатированным Parameters ресурсом JSON в тексте запроса.

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

}

Примечание.

Чтобы проверить состояние задания переиндексирования или отменить его, вам потребуется идентификатор повторной индексации. "id" Это перенос "parameter" в значении ответа. В предыдущем примере идентификатор задания переиндексации будет 560c7c61-2c70-4c54-b86d-c53a9d29495e.

Как проверить состояние задания переиндексирования

После запуска задания переиндексирования можно проверить состояние задания с помощью следующего вызова.

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

Вот пример ответа.

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

В приведенном выше ответе показаны следующие сведения:

  • totalResourcesToReindex: включает общее количество ресурсов, которые переиндексированы в этом задании.

  • resourcesSuccessfullyReindexed: общее количество ресурсов, которые уже были переиндексированы в этом задании.

  • progress: процент завершения задания переиндексации. resourcesSuccessfullyReindexed/totalResourcesToReindex Равно x 100.

  • status: указывает, если задание повторной индексации находится в очереди, выполняется, завершается, завершается сбоем или отменяется.

  • resources: выводит список всех типов ресурсов, затронутых заданием переиндексации.

  • "resourceReindexProgressByResource (CountReindexed of Count)": предоставляет повторное количество итогового количества ресурсов для каждого типа ресурса. В случаях, когда переиндексирование для определенного типа ресурса помещается в очередь, предоставляется только число.

  • SearchParams: выводит URL-адрес параметров поиска, затронутых заданием переиндексации.

Удаление задания переиндексации

Если необходимо отменить задание повторной индексации, используйте DELETE вызов и укажите идентификатор задания переиндексации.

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

Замечания, связанные с быстродействием

Задание переиндексации может быть довольно интенсивным. Служба FHIR предлагает элементы управления регулированием, помогающие управлять выполнением задания переиндексации в базе данных.

Примечание.

Это не редкость в больших наборах данных для задания переиндексации для выполнения в течение нескольких дней.

Ниже приведена таблица с указанием доступных параметров, значений по умолчанию и рекомендуемых диапазонов для управления вычислительными ресурсами задания переиндексации. Эти параметры можно использовать для ускорения процесса (используйте больше вычислений) или замедления процесса (используйте меньше вычислений).

Параметр Description По умолч. Доступный диапазон
QueryDelayIntervalInMilliseconds Задержка между каждым пакетом ресурсов, запускаемой во время задания переиндексации. Меньшее число ускоряет задание, в то время как большее число замедляет его. 500 МС (5 секунд) От 50 до 500000
MaximumResourcesPerQuery Максимальное количество ресурсов, включенных в пакет, которые необходимо переиндексировать. 100 1-5000
MaximumConcurrency Количество пакетов, выполненных за раз. 1 1–10

Если вы хотите использовать любой из предыдущих параметров, их можно передать в Parameters ресурс при отправке первоначального POST запроса, чтобы запустить задание повторной индексации.


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

Следующие шаги

В этой статье вы узнали, как выполнить задание повторного индексации в службе FHIR. Сведения о том, как определить настраиваемые параметры поиска, см. в статье

Примечание.

FHIR® является зарегистрированным товарным знаком HL7 и используется с разрешением HL7 .