Операция переиндексации данных (reindexDataJob)¶
Операция переиндексации данных предназначена для запуска индексации поисковой системы при значимых изменениях в структуре записей или при добавлении новых данных. Индексированные данные ускоряют поиск и отображаются в интерфейсе пользователя.
По условиям лицензирования у операции reindexDataJob может быть отключена многопоточность. В таком случае операция будет запускаться только на одном узле кластера.
Параметры операции¶
Имя пользователя (поле ввода). Логин учетной записи. Определяет, с правами какой учетной записи будет запускаться операция. Если поле пустое, то при запуске по Cron-выражению у операции будут полные права на любой реестр/справочник; при запуске через интерфейс у операции будут права текущей учетной записи. Для учетной записи оператора данных может понадобиться настроить права на реестры/справочники.
Очищать индексы (флаг). Удаляет старые индексы и создает новые.
Не создавать стандартный отчет (флаг). Отключает запись событий в журнал аудита.
Обновить маппинги (флаг). Обновляет маппинги индекса.
Проиндексировать объекты модели (выпадающий список). Реестр/справочник для которого будет выполнена переиндексация (доступен выбор нескольких). По умолчанию установлено значение All - операция выполняется для всех реестров/справочников.
Размер блока (поле ввода). Размер блока загружаемых данных (количество записей). Значение по умолчанию 1024.
Проиндексировать бизнес-процессы (выпадающий список). Выбирает имена бизнес-процессов, данные которых будут переиндексированы. Если параметр отключен, то процессы не индексируются. Параметр доступен при наличии модуля бизнес-процессов.
Проиндексировать данные бизнес-процессов (флаг). Отключает или включает параметр. Параметр доступен при наличии модуля бизнес-процессов.
Проиндексировать записи (флаг). Запускает переиндексацию записей.
Проиндексировать связи (флаг). Запускает переиндексацию связей.
Проиндексировать черновики записи (флаг). Запускает индексацию черновиков записей и их дочерних сущностей (связей и т.п.) в индексы черновиков выбранных реестров/справочников.
Проиндексировать черновики (флаг). Выполняет индексацию черновиков в индекс
default_default_[draft]
.Проиндексировать модель данных (флаг). Выполняет индексацию модели данных в индекс
default_default_[model]
.Проиндексировать классификацию (флаг). Запускает переиндексацию классификации.
Писать лог ошибок (флаг). Сохраняет данные неудачных интервалов фиксации в БД.
Обработать лог ошибок (флаг). Активирует режим дообработки накопленных неудачных запросов.
Когда применяется¶
Операция запускается в случаях:
Если производились значимые изменения модели данных, записях, классификации, таблицы сопоставления и т.д.
При назначении правил сопоставления на реестры/справочники, где уже присутствуют записи;
При переходе на OpenSearch с потерей данных с помощью docker или вручную.
Если есть сомнения в актуальности данных в индексе. Например, не отображается часть записей.
Если было загружено много данных, и они не отображаются.
Если индекс данных был очищен вручную.
Периодичность запуска определяется администратором системы с учетом рабочих задач по обслуживанию Юниверс 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 партиций.
Обработка данных происходит последовательно: записи > связи > классификаторы > бизнес-процессы > матчинг. Сначала завершается обработка одного типа данных, затем происходит переход к другому. Обрабатываются те типы данных, которые есть в наличии.