2014-10-20 56 views
0

我在Solr中自动生成uuid时遇到了问题。我希望Solr为DataImportHandler导入的数据自动生成uuids。Solr在自动uuid生成中不断给出错误

这里就是我所做的:

schema.xml中

<fieldType name="uuid" class="solr.UUIDField" indexed="true" /> 
<field name="id" type="uuid" indexed="true" stored="true" required="true" multiValued="false" /> 

solrconfig.xml中 我说:

<updateRequestProcessorChain name="uuid"> 
    <processor class="solr.UUIDUpdateProcessorFactory"> 
     <str name="fieldName">id</str> 
    </processor> 
    <processor class="solr.RunUpdateProcessorFactory" /> 
</updateRequestProcessorChain> 

我修改:

<requestHandler name="/update" class="solr.UpdateRequestHandler"> 
<!-- See below for information on defining 
    updateRequestProcessorChains that can be used by name 
    on each Update Request 
    --> 
<!-- 
    <lst name="defaults"> 
    <str name="update.chain">dedupe</str> 
    </lst> 
    --> 
<lst name="defaults"> 
    <str name="update.chain">uuid</str> 
</lst> 

另外我没有评论或删除UniqueKey并删除了有关QueryElevation的所有信息。

但我只是不断收到这个错误,我完全不知道它出现在哪里。

org.apache.solr.common.SolrException: Invalid UUID String: '1' 
at org.apache.solr.schema.UUIDField.toInternal(UUIDField.java:89) 
at org.apache.solr.schema.FieldType.readableToIndexed(FieldType.java:393) 
at org.apache.solr.schema.FieldType.readableToIndexed(FieldType.java:398) 
at org.apache.solr.update.AddUpdateCommand.getIndexedId(AddUpdateCommand.java:98) 
at org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:717) 
at org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:557) 
at org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:100) 
at org.apache.solr.handler.dataimport.SolrWriter.upload(SolrWriter.java:71) 
at org.apache.solr.handler.dataimport.DataImportHandler$1.upload(DataImportHandler.java:235) 
at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:512) 
at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:416) 
at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:331) 
at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:239) 
at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:411) 
at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:483) 
at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:464) 

顺便说一句,我使用的是Solr 4.8。非常感谢您的回复,我非常感谢您的帮助!

+0

删除数据目录并使用新配置重新启动solr。 – everreadyeddy 2014-10-20 20:43:00

+0

@ everreadyeddy,对不起伙伴。这是行不通的。 – penpen926 2014-10-20 21:05:54

回答

3

我的猜测是,你正在野外使用该名称来自DIH和UUID URP未来不会覆盖一个(如果存在)。

尝试在前面添加IgnoreFieldUpdateProcessorFactory,看看问题是否会消失。如果确实如此,你可以开始计算DIH从哪里采集它。例如,如果你是从数据库中获取数据,并使用选择*,DIH会自动尝试用相同名称的任何字段映射到你有什么样的模式。