Solr - 如何从DataImportHandler接收失败导入的通知?

时间:2012-02-01 14:29:21

标签: solr notifications dataimporthandler

我们的solr索引会根据计划刷新,也可以根据需要通过DataImportHandler完全导入进行任意刷新。我们曾多次因各种原因导致导入失败。

如何在使用DataImportHandler执行导入时收到错误发生的通知(最好是电子邮件)?

2 个答案:

答案 0 :(得分:7)

没有简单的配置解决方案。但是存在另一种选择,你可能不得不做很少的工作。

您可以在数据配置中向DIH注册EventListener以侦听事件EventListener

参考Wiki

<dataConfig>
  <document onImportStart ="com.foo.StartEventListener" onImportEnd="com.foo.EndEventListener">
   ....
   </document>
</dataConfig>

您的EventListener可让您访问Context对象,该对象可访问大多数DataImportHandler对象&amp;事件统计。

例如,您onImportEnd可以com.foo.EndEventListener Context使用# of DocsSkipped对象句柄获取# of DocsFailedContext ...... {{1}是一个有价值的对象,暴露了许多DIH内部。您的事件监听器可以根据需要对此信息执行操作。

或许需要注意的是,DIH通知主要是事后,您不会在事件发生时通知事件,您必须等待导入过程完成以便DIH通知您的听众或者可能有解决方法

答案 1 :(得分:1)

在尝试使用EventListener取得一些成功之后,我们审查了我们的选项,并最终采用了一种不那么万无一失的方法。

我们使用现有的监控基础架构(主要使用Nagios)来轮询dataimporthandler的状态,而不是扩展Solr。它会每分钟运行一次并在检测到导入失败时通过我们的正常通道提醒我们。这很好,但它仍然无法检测作业是否完全没有运行 - 并且错过了其他一些极端情况。

总的来说,虽然现在这种方法运作良好。它使用我们现有的基础设施,并使我们围绕Solr的工作仅限于其核心功能。当我们最终升级到Solr 4.0时,我肯定会重新审视这个。