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

STW*_*STW 5 notifications solr dataimporthandler

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

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

mai*_*oat 7

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

您可以EventListener在data-config中注册DIH以侦听事件EventListener.

请参阅Wiki

<dataConfig>
  <document onImportStart ="com.foo.StartEventListener" onImportEnd="com.foo.EndEventListener">
   ....
   </document>
</dataConfig>
Run Code Online (Sandbox Code Playgroud)

EventListener可以访问Context Object,它可以访问大多数DataImportHandler对象和事件统计信息.

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

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


STW*_*STW 1

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

我们没有扩展 Solr,而是使用现有的监控基础设施(主要是 Nagios)来轮询dataimporthandler. 它每分钟运行一次,如果检测到导入失败,就会通过正常渠道向我们发出警报。这很好,但它仍然无法检测作业是否根本没有运行,并且错过了一些其他极端情况。

总的来说,目前来说这已经足够好了。它使用我们现有的基础设施,并使我们围绕 Solr 的工作仅限于其核心功能。当我们最终升级到 Solr 4.0 时,我肯定会重新审视这一点。