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

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

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

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

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

Чтобы повторно индексировать всю базу данных службы FHIR и обеспечить работоспособность настраиваемого параметра поиска, используйте следующий POST вызов с ресурсом в формате Parameters JSON в тексте запроса:

POST {{FHIR_URL}}/$reindex 

{ 

“resourceType”: “Parameters”,  

“parameter”: [] 

}

Оставьте поле пустым "parameter": [] (как показано на рисунке), если не нужно настраивать вычислительные ресурсы, выделенные для задания повторной индексации. В случае успешного выполнения запроса вы получите код состояния 201 Created в дополнение к ресурсу 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": "\"4c0049cd-0000-0100-0000-607dc5a90000\""
  },
  "parameter": [
    {
      "name": "id",
      "valueString": "560c7c61-2c70-4c54-b86d-c53a9d29495e"
    },
    {
      "name": "queuedTime",
      "valueDateTime": "2021-04-19T18:02:17.0118558+00:00"
    },
    {
      "name": "totalResourcesToReindex",
      "valueDecimal": 0.0
    },
    {
      "name": "resourcesSuccessfullyReindexed",
      "valueDecimal": 0.0
    },
    {
      "name": "progress",
      "valueDecimal": 0.0
    },
    {
      "name": "status",
      "valueString": "Queued"
    },
    {
      "name": "maximumConcurrency",
      "valueDecimal": 1.0
    },
    {
      "name": "resources",
      "valueString": ""
    },
    {
      "name": "searchParams",
      "valueString": ""
    }
  ]
}

Примечание

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

Проверка состояния задания повторной индексации

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

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

Ниже приведен пример ответа:

{

  "resourceType": "Parameters",
  "id": "b65fd841-1c62-47c6-898f-c9016ced8f77",
  "meta": {

    "versionId": "\"1800f05f-0000-0100-0000-607a1a7c0000\""
  },
  "parameter": [

    {

      "name": "id",
      "valueString": "b65fd841-1c62-47c6-898f-c9016ced8f77"
    },
    {

      "name": "startTime",
      "valueDateTime": "2021-04-16T23:11:35.4223217+00:00"
    },
    {

      "name": "queuedTime",
      "valueDateTime": "2021-04-16T23:11:29.0288163+00:00"
    },
    {

      "name": "totalResourcesToReindex",
      "valueDecimal": 262544.0
    },
    {

      "name": "resourcesSuccessfullyReindexed",
      "valueDecimal": 5754.0
    },
    {

      "name": "progress",
      "valueDecimal": 2.0
    },
    {

      "name": "status",
      "valueString": "Running"
    },
    {

      "name": "maximumConcurrency",
      "valueDecimal": 1.0
    },
    {

      "name": "resources",
      "valueString": 
      "{{LIST_OF_IMPACTED_RESOURCES}}"
    }
  ]
}

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

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

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

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

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

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

Удаление задания повторной индексации

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

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

Вопросы производительности

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

Примечание

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

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

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

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


POST {{FHIR_URL}}/$reindex 

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

Дальнейшие действия

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

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