Операция переиндексации данных (reindexDataJob)

Операция переиндексации данных предназначена для запуска индексации поисковой системы при значимых изменениях в структуре записей или при добавлении новых данных. Индексированные данные ускоряют поиск и отображаются в интерфейсе пользователя.

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

Параметры операции

  • Имя пользователя (поле ввода). Логин учетной записи. Определяет, с правами какой учетной записи будет запускаться операция. Если поле пустое, то при запуске по Cron-выражению у операции будут полные права на любой реестр/справочник; при запуске через интерфейс у операции будут права текущей учетной записи. Для учетной записи оператора данных может понадобиться настроить права на реестры/справочники.

  • ID операции (поле ввода). Позволяет задавать идентификатор операции.

  • Фоновая переиндексация (флаг). Позволяет запускать операцию в фоновом режиме.

  • Размер блока (поле ввода). Размер блока загружаемых данных (количество записей). Значение по умолчанию 1024.

Секция "Индексация бизнес-процессов":

  • Проиндексировать данные бизнес-процессов (флаг). Отключает или включает параметр. Параметр доступен при наличии модуля бизнес-процессов.

  • Проиндексировать бизнес-процессы (выпадающий список). Выбирает имена бизнес-процессов, данные которых будут переиндексированы. Если параметр отключен, то процессы не индексируются. Параметр доступен при наличии модуля бизнес-процессов.

Секция "Индексация черновиков":

  • Проиндексировать черновики (флаг). Выполняет индексацию черновиков в индекс default_default_[draft].

Секция "Индексация модели данных":

  • Проиндексировать модель данных (флаг). Выполняет индексацию модели данных в индекс default_default_[model].

Секция "Индексация данных":

  • Проиндексировать данные (флаг). Запускает переиндексацию записей. Единичную запись можно переиндексировать отдельно из карточки записи.

  • Проиндексировать черновики данных (флаг). Запускает индексацию черновиков записей и их дочерних сущностей (связей и т.п.) в индексы черновиков выбранных реестров/справочников.

  • Проиндексировать объекты модели (выпадающий список). Реестр/справочник для которого будет выполнена переиндексация (доступен выбор нескольких). По умолчанию установлено значение All - операция выполняется для всех реестров/справочников.

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

  • Обновить маппинги (флаг). Обновляет маппинги индекса.

  • Очищать индексы (флаг). Удаляет старые индексы и создает новые.

  • Не создавать стандартный отчет (флаг). Отключает запись событий в журнал аудита.

  • Писать лог ошибок (флаг). При включении флага, процесс будет собирать любые ошибки, которые возникают при обработке записей в таблицу. Таблица автоматически создается (и удаляется, если оказывается пустой по окончании работы задачи) в схеме org_unidata_mdm_data и использует заданный пользователем "Operation ID" для генерации имени.

  • Обработать лог ошибок (флаг). При включении флага, записи из основного хранилища не будут считываться и обрабатываться.

  • Продолжать при ошибках? (флаг). При включении продолжает запуск блока даже в случае возникновения ошибок.

Секция "Индексация классификаторов":

  • Проиндексировать классификаторы (выпадающий список). Выбирает имена классификаторов, данные которых будут переиндексированы. Если параметр отключен, то классификаторы не индексируются.

  • Обновить маппинги (флаг). Обновляет маппинги индекса. Если флаг включен - будет создан индекс для классификаторов и черновиков классификаторов, если таковых не существовало ранее.

  • Очистить индекс (флаг). Удаляет старые индексы и создает новые. Если включен - индекс для классификаторов и черновиков классификаторов будет пересоздан.

  • Проиндексировать классификаторы (флаг). Выполняет индексацию выбранных версий классификаторов. Например, если была выбрана версия V классификатора C, то будут проиндексированы следующие элементы: Классификатор C, Версия V, Все узлы версии V. Группы (узлы, содержащие потомков) не могут быть выбраны в качестве значения - при нажатии на них производится выбор/снятие выбора всех потомков узла. В поле ввода отображаются имена классификаторов и выбранной версии. Если текст имен слишком длинный - он обрезается, а полное название будет отображаться по наведению курсора.

Когда применяется

Операция запускается в случаях:

Периодичность запуска определяется администратором системы с учетом рабочих задач по обслуживанию Юниверс MDM.

Лог ошибок

Примечание

Одновременно должен быть включен только один параметр: Писать лог ошибок (writeIdLog) ИЛИ Обработать лог ошибок (processIdLog)

Писать/Обработать лог ошибок сохраняет в БД информацию о записях, не попавших в индекс, чтобы при дальнейшем запуске была возможность дообработать только неудачно завершившуюся часть, что существенно экономит время на полную переиндексацию большого количества записей.

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

В случае, если необходимо переиндексировать большие данные:

  • сперва запускается операция с Писать лог ошибок.

  • затем, если остаются неиндексированные данные, то запустить операцию повторно, выключив Писать лог ошибок и включив Обработать лог ошибок.

Также при больших данных можно отключать параметры Очищать индексы и Обновить маппинги.

Механизм работы параметра "Размер блока" (blockSize)

Все количество обрабатываемых записей делится на части по blockSize записей.

Затем в каждой части обрабатывается одним тредом по org.unidata.mdm.job.reindex.data.commit.interval записей (в памяти держится информация по этому количеству записей, при переходе к следующим записям память очищается), пока не кончатся записи.

Параметр org.unidata.mdm.job.reindex.data.commit.interval, как правило, не нуждается в редактировании. Рекомендуемого значения 1000 достаточно для большинства задач. Чем больше этот параметр, тем больше памяти может быть занято в один момент времени. Если этот параметр больше, чем blockSize, то фактически этот параметр будет равен blockSize.

org.unidata.mdm.job.reindex.data.reindex.threads - количество одновременно обрабатываемых тредов.

Параметры org.unidata.mdm.job.reindex.data.commit.interval и org.unidata.mdm.job.reindex.data.reindex.threads задаются в backend.properties.

Таким образом, следует выбирать org.unidata.mdm.job.reindex.data.reindex.threads по количеству логических ядер процессора (использовать равное или меньшее число, в зависимости от наличия другой нагрузки на процессор).

При указании небольшого blockSize легче отслеживать прогресс операции через UI (менеджер запусков > выбрать запуск > количество выполненных шагов).

Также blockSize необходимо выбирать в соответствии с общим количеством данных чтобы количество партиций не было слишком большим. На таких больших данных, как в справочнике с адресами, оптимальным вариантом является 500-2000 партиций.

Обработка данных происходит последовательно: записи > связи > классификаторы > бизнес-процессы > матчинг. Сначала завершается обработка одного типа данных, затем происходит переход к другому. Обрабатываются те типы данных, которые есть в наличии.

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

Предварительно:

Чтобы переидексировать единичную запись:

  1. Найдите требуемую запись при помощи инструментов поиска и откройте ее.

  2. Нажмите комбинацию клавиш Ctrl + Alt + i и в открывшемся модальном окне (Рисунок 1) нажмите кнопку "ОК".

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

Рисунок 1 - Окно подтверждения переиндексации единичной записи