【问题标题】:Solr Cluster + DataImportHandler: can I have autogenerated id?Solr Cluster + DataImportHandler:我可以自动生成 id 吗?
【发布时间】:2013-10-07 09:31:56
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: solr uniqueidentifier data-import


    【解决方案1】:

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

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

      @Override
      public Object transformRow(Map<String, Object> row, Context context) {
          row.put("id", UUID.randomUUID());
      
    • 然后,我从我的 solrconfig.xml 中删除了 &lt;updateRequestProcessorChain name="uuid"&gt; 标记,并仅按照问题中的链接保留了 schema.xml 配置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多