2014-10-20 1 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

+0

@ everreadyeddy, 죄송합니다. 친구. 그건 작동하지 않습니다. – penpen926

답변

3

내 생각에 DIH에서 나온 이름으로 필드를 가져오고 UUID URP가 있으면이 필드가 무시됩니다.

앞에 IgnoreFieldUpdateProcessorFactory을 추가하고 문제가 사라지는지 확인하십시오. 그렇다면 DIH가 어디에서 가져 왔는지 알아낼 수 있습니다. 예를 들어 데이터베이스에서 데이터를 가져오고 *을 사용하는 경우 DIH는 스키마에있는 것과 동일한 이름의 필드를 자동으로 매핑하려고 시도합니다.