Solr Cluster + DataImportHandler:我可以自动生成id吗?

时间:2013-10-07 09:31:57

标签: solr uniqueidentifier data-import

我正在使用Solr 4.3。我创建了4个分片。我按照此处的描述配置了UniqueKey自动生成字段:

http://wiki.apache.org/solr/UniqueKey

如果我使用实际的更新处理程序来插入文档(例如,如果我使用某些JSON数据进行HTTP POST /更新,则为每个文档自动生成唯一键),它可以正常工作。

但是,如果我使用DataImportHandler从数据库中提取某些文档,它们不会添加到索引中,而是在Solr日志中看到一条警告,说“缺少必需的id字段”。

我知道DataImportHandler没有通过UpdateHandler来添加文档,但是我希望这个功能对DIH也有用......

所以我的问题是:当使用DataImportHandler插入文档时,有没有人知道如何使Solr 4.3集群的id自动生成工作?

1 个答案:

答案 0 :(得分:2)

嗯,我最终使用的解决方案就是这个

  • 用Java创建了一个自定义变换器(实际上我已经使用了一个 - 我发现它比在JS中使用它更快 - 这是Solr提供的另一个选项)
  • 在变换器内部,我几乎做了UUIDUpdateProcessorFactory所做的事情:添加

    @Override
    public Object transformRow(Map<String, Object> row, Context context) {
        row.put("id", UUID.randomUUID());
    
  • 然后我从solrconfig.xml中删除了<updateRequestProcessorChain name="uuid">标记,并且只根据问题中的链接离开了schema.xml配置