Формулировка проблемы: плохая документированность предназначения и поведения индексатора документов 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
- последнее сообщение
процесса оптимизации