Формулировка проблемы: плохая документированность предназначения и поведения индексатора документов ARTA Synergy приводит к тому, что документы переиндексируются в любых случаях, которые, по мнению администраторов, относятся к проблемам с поиском и отображением документов, а также в случаях «почему бы и не переиндексировать».
Используется: индексатор документов ARTA Synergy, Административное приложение.
Решение:
Необходимо переименовать раздел «Управление БД документов» в «Управление индексом документов», так как текущее название (оставшееся от реализации поиска документов на Cassandra) вводит в заблуждение.
Необходимо ввести версию индекса документов. Версия индекса документов - неотрицательное целое число, характеризующее его структуру. При любом изменении структуры индекса (добавление/удаление полей, изменение их типов и т.п.) необходимо увеличивать значение версии индекса.
В разделе «Управление индексом документов» Административного приложения необходимо отображать две версии индекса:
Текущую - это версия индекса, с которым который подключен к системе на текущий момент
Доступную - это версия индекса, с которым может и должна работать запущенная система
Если текущая версия индекса меньше доступной, необходимо полное переиндексирование.
В разделе «Управление индексом документов» Административного приложения необходимо отображать следующую информацию об индексе (см. иллюстрацию выше):
Количество добавленных в индекс документов
Количество удалённых из индекса документов
На основе этой информации администратор может принять решение о
переиндексировании. Если соотношение количества добавленных и
удалённых документов составляет 1/2 или более, требуется
оптимизация индекса - кнопка
Оптимизировать индекс становится активной.
Необходимо реализовать методы для манипуляции с индексом - получение информации, переиндексирование и оптимизация.
URL метода: rest/api/admin/index/info
Тип запроса: GET
Возвращает данные о состоянии индекса в виде JSON-объекта:
{
"version": 1,
"versionMax": 2,
"docsAdded": 5000,
"docsRemoved" :2500
}
URL метода:
rest/api/admin/index/reindex/start
Тип запроса: POST
Метод принимает на вход JSON-объект следующего вида:
{
"resume": "false",
"pause": 0
}
где:
resume - продолжить предыдущий процесс
индексирования, по умолчанию false
pause - пауза между индексированием
частей документов, в миллисекундах. Значение по умолчанию -
0
Все параметры являются необязательными.
Метод возвращает JSON-объект следующего вида:
{
"errorCode": 0,
"errorMessage": ""
}
где:
errorCode - код ошибки:
0 - успешно
7 - процесс переиндексации уже идет
13 - ошибка при запуске переиндексации
errorMessage - сообщение об ошибке
URL метода:
rest/api/admin/index/reindex/info
Тип запроса: GET
Метод возвращает информацию о процессе индексирования в виде JSON-объекта:
{
"lastStatus": "FINISHED",
"lastMessage": "Индексирование документов завершено",
"lastStatusChanged": 1435729293
}
где:
lastStatus - статус последней
переиндексации, один из:
FINISHED - завершено
IN_PROGRESS - в процессе
NOT_STARTED - индексация не
проводилась
lastStatusChanged - дата и время
последнего изменения статуса, в формате Unix timestamp
lastMessage - последнее сообщение
процесса индексации
URL метода:
rest/api/admin/index/optimize/start
Тип запроса: POST
Метод принимает на вход JSON-объект следующего вида:
{
"wait": "false",
"maxSegmentCount": 0
}
где:
wait - дождаться окончания оптимизации
индекса до выдачи результата, по умолчанию
false
maxSegmentCount - максимальное количество
сегментов индекса, которое необходимо оптимизировать. Если
передано значение <= 0, либо параметр отсутствует, индекс
будет оптимизирован полностью. Значение по умолчанию -
0
Все параметры являются необязательными.
Метод возвращает JSON-объект следующего вида:
{
"errorCode": 0,
"errorMessage": ""
}
где:
errorCode - код ошибки:
0 - успешно
7 - процесс оптимизации уже идет
13 - ошибка при запуске оптимизации
errorMessage - сообщение об ошибке
URL метода:
rest/api/admin/index/optimize/info
Тип запроса: GET
Метод возвращает информацию о процессе оптимизации индекса в виде JSON-объекта:
{
"lastStatus": "FINISHED",
"lastMessage": "Оптимизация индекса завершена",
"lastStatusChanged": 1435729293
}
где:
lastStatus - статус последней оптимизации
индекса, один из:
FINISHED - завершено
IN_PROGRESS - в процессе
NOT_STARTED - оптимизация не
проводилась
lastStatusChanged - дата и время
последнего изменения статуса, в формате Unix timestamp
lastMessage - последнее сообщение
процесса оптимизации