Скажите StormCrawler об удалении страниц из ES-индекса после их удаления на сервере

У меня есть следующий сценарий:

  • StormCrawler сканирует существующую страницу
  • StormCrawler добавляет соответствующий документ в индекс Elasticsearch
  • Страница удалена на сервере

=> Сканер "обнаруживает" удаление страницы путем обновления индекса состояния: документ получает статус "FETCH_ERROR" (и после достижения "max.fetch.errors" статуса "ОШИБКА").

Проблема: Elasticsearch-Index по-прежнему сохраняет документ, но поскольку страница была удалена, это не имеет смысла.

Глядя на конфигурацию, я не нашел способа сообщить StormCrawler об удалении документов из индекса ES, которые имеют статус "ОШИБКА" (например, были удалены). Есть ли способ сделать это с помощью StormCrawler или есть причина, почему это невозможно?

Большое спасибо за Вашу помощь!

1 ответ

Мы планируем добавить статус GONE, но это еще не реализовано, см. # 253. В то же время мы можем удалить состояние ОШИБКА (даже если большинство из них не были бы добавлены в ES), трудность заключается в том, что индексация выполняется в потоке по умолчанию, то есть в документах, которые были извлечены и проанализированы, тогда как информация о состоянии отправляется к потоку состояния с помощью различных болтов. У нас мог бы быть сделанный на заказ болт для удалений - ему просто понадобился бы URL-адрес и ничего больше: чтобы использовать его, мы могли бы изменить AbstractStatusUpdaterBolt так, чтобы он испускал URL-адреса для удаления в специальный поток, например, "удаление", и подключил наш специальный болт удаления ES к Это. Имеет ли это смысл? Пожалуйста, не стесняйтесь участвовать в обсуждении по ссылке выше. Спасибо!

Другие вопросы по тегам