Что это значит

Когда документ создают или меняют, RX отправляет сообщение в очередь индексации, а сервис индексации передаёт текст и карточку в Elasticsearch. Ошибка в обработчике означает, что документ туда не попал. Пользователи не находят его поиском, хотя он есть в системе.

Причин три группы: - Elasticsearch недоступен или закрыт на запись: заполнен диск, кластер в статусе red, исчерпан лимит шардов; - Elasticsearch отверг документ: поле не подходит под схему индекса (mapper_parsing_exception), слишком длинное значение (immense term); - не удалось извлечь текст из файла: повреждённый или зашифрованный документ, неподдерживаемый формат.

Как проверить

  1. Ответ Elasticsearch во внутреннем исключении: код (400, 429, 503) и тип ошибки.
  2. Состояние кластера:
GET _cluster/health
GET _cat/allocation?v
  1. Очередь индексации в RabbitMQ: если она растёт и не убывает, проблема массовая, а не в одном документе.

Что сделать

  1. Кластер недоступен или закрыт на запись: сначала починить его, потом очередь разберётся сама. Смотрите статьи про заполненный диск и лимит шардов.
  2. Ошибка схемы на отдельных документах: передать разработчикам пример, поле и значение. Обычно лечится правкой схемы индекса и переиндексацией.
  3. Плохой файл: документ останется без полнотекстового поиска, но будет находиться по карточке.
  4. После любых работ с кластером проверить, что очередь индексации пуста, а не застряла.