5

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

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

4

2 回答 2

7

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

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

参考维基

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

EventListener可以访问Context Object,它提供了对大多数 DataImportHandler 对象和事件统计信息的访问。

例如,onImportEnd如果您com.foo.EndEventListener可以使用Context对象句柄来获取 Staistics 等# of DocsSkipped# of DocsFailed... Context是一个有价值的对象,它暴露了许多 DIH 内部结构。由您的事件侦听器来执行它需要对这些信息执行的操作。

也许需要注意,DIH 通知大多是在事后发生的,您不会在发生事件时通知事件,您必须等待导入过程完成,DIH 才能通知您的侦听器,或者可能有解决方法。

于 2012-02-01T18:02:17.593 回答
1

在尝试使用 EventListener 并取得一些成功后,我们审查了我们的选项并最终确定了一种不太简单的方法。

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

总的来说,虽然这目前工作得很好。它使用我们现有的基础设施,并将我们围绕 Solr 所做的工作限制在其核心功能上。当我们最终升级到 Solr 4.0 时,我肯定会重新审视这一点。

于 2013-07-12T14:33:57.200 回答