Когда поиск показывает удаленные документы, пользователи открывают неактуальные материалы, видят 404 или получают доступ к тому, что должно быть скрыто.
Проблема может быть в индексе, но часто корень глубже: удаление в базе не синхронизируется с поиском или права не учитываются при выдаче.
Коротко: удаление должно обновлять и базу, и поисковый индекс, и кеш выдачи.Почему возникает такая проблема
Причины: soft delete не передается в индекс, очередь переиндексации упала, документ удален в базе, но остался в Elasticsearch, кеш поиска не сброшен, или фильтр прав доступа применяется только на странице документа, но не в поисковой выдаче.
Что проверить в первую очередь
- есть ли документ в базе и в индексе
- как работает soft delete
- прошла ли задача переиндексации
- не кешируется ли выдача поиска
- учитываются ли права доступа при поиске
Как я подхожу к задаче
Я сравниваю состояние документа в базе, индексе и интерфейсе поиска.
- нахожу конкретный удаленный документ
- проверяю запись в индексе
- смотрю очередь синхронизации
- исправляю обработку удаления
- запускаю частичную или полную переиндексацию
Что подготовить для быстрой диагностики
- пример удаленного документа
- поисковый запрос
- какой поиск используется
- доступ к базе и индексу
- правила удаления и восстановления
Сроки и аккуратность
Разовое удаление из индекса быстрое, но правильнее исправить синхронизацию, иначе устаревшие документы появятся снова.
Чего лучше не делать
Не делайте полную переиндексацию на рабочей нагрузке без оценки объема. Это может замедлить сайт.
FAQ
Что такое soft delete?
Это когда запись помечается удаленной, но физически остается в базе.
Можно ли удалять из индекса сразу?
Да, если событие удаления надежно доходит до поисковой системы.
Почему документ найден, но страница 404?
Индекс устарел и содержит запись, которой уже нет в активной базе.
Нужно ли учитывать права в поиске?
Да, иначе пользователь может видеть названия закрытых документов.
Нужна похожая задача?
Напишите в Telegram @rabotator_support или оставьте заявку на сайте. Пришлите ссылку на проект, опишите проблему и укажите, какие доступы уже есть. Я посмотрю задачу, предложу безопасный план и скажу, с чего лучше начать.
Итог
Поиск должен показывать только актуальные документы, учитывать права доступа и быстро обновлять индекс после удаления или восстановления.