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



我正在使用Solr 4.3。我已经创建了 4 个分片。我配置了唯一键自动生成的字段,如下所述:

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

如果我使用

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

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

我知道DataImportHandler不会通过UpdateHandler来添加文档,但我希望这个功能也适用于DIH......

所以我的问题是:在使用DataImportHandler插入文档时,有没有人知道如何使Solr 4.3集群的id

自动生成工作?

好吧,我最终使用的解决方案是这个

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

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

最新更新