簡體   English   中英

SOLR mysql DataImport缺少必需的uniqueKey字段:id

[英]SOLR mysql DataImport missing mandatory uniqueKey field: id

我是SOLR的新手。 使用DataImporter將MySQL記錄帶入索引。 導入有效,但創建了0個文檔。 我看到以下錯誤:

org.apache.solr.common.SolrException:文檔缺少必需的uniqueKey字段:id

我的data-config.xml如下所示:

<dataConfig>  
<dataSource type="JdbcDataSource" driver="org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost/gartner" user="" password="" batchSize="-1" />  
<document name="inquiries">
    <entity name="inquiry_data" query="SELECT * FROM research_srv_req">
        <field column="reference_id" name="reference_id" />
        <field column="type" name="type" />
        <field column="sub_type" name="sub_type" />
        <field column="subject" name="inquiry_subject" />
        <field column="advice" name="advice" />
        <field column="client_question" name="client_question" />
        <field column="decision_stage_desc" name="decision_stage_desc" />
        <field column="acct_name" name="acct_name" />
        <field column="acct_sic_type" name="acct_sic_type" />
        <field column="acct_sic_sub_type" name="acct_sic_sub_type" />
        <field column="enterprise_sic_type" name="enterprise_sic_type" />
        <field column="enterprise_sic_sub_type" name="enterprise_sic_sub_type" />
        <field column="client_job_title" name="client_job_title" />
    </entity>  
</document>  

並將以下內容添加到我的schema.xml文件中:

<field name="reference_id" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="type" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="sub_type" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="inquiry_subject" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="advice" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="client_question" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="decision_stage" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="acct_name" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="acct_sic_type" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="acct_sic_sub_type" type="string" indexed="true" stored="true" required="true" multiValued="false" />   
<field name="enterprise_sic_type" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
<field name="enterprise_sic_sub_type" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
<field name="client_job_title" type="string" indexed="true" stored="true" required="true" multiValued="false" />

原始的schema.xml也具有以下行:

<uniqueKey>id</uniqueKey>

我嘗試將id更改為reference_id,這是數據庫中的唯一列,但是隨后SOLR無法通過以下堆棧轉儲加載:

消息{msg = SolrCore'collection1'由於初始化失敗而無法使用:初始化QueryElevationComponent時出錯。,trace = org.apache.solr.common.SolrException:由於初始化失敗而使SolrCore'collection1'無法使用:初始化QueryElevationComponent時出錯。 在org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:251)在org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:251)在org.apache.solr.servlet.SolrDispatchFilter.doFilter (SolrDispatchFilter.java:158)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)在org.apache。 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)上的catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java: 127)在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)在org.apache.catalina.connector.CoyoteAdapter .service(CoyoteAdapter.java:298)位於org.apache.coyote.http11.Http11Processor.process(Http11Processor。 java:859)在org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:588)在org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:489)在java .lang.Thread.run(未知源)由:org.apache.solr.common.SolrException:初始化QueryElevationComponent時出錯。 在org.apache.solr.core.SolrCore。(SolrCore.java:835)在org.apache.solr.core.SolrCore。(SolrCore.java:629)在org.apache.solr.core.CoreContainer.createFromLocal(CoreContainer .java:622),位於org.apache.solr.core.CoreContainer.create(CoreContainer.java:657),位於org.apache.solr.core.CoreContainer $ 1.call(CoreContainer.java:364),位於org.apache.solr .core.CoreContainer $ 1.call(CoreContainer.java:356)在java.util.concurrent.FutureTask $ Sync.innerRun(未知源)在java.util.concurrent.FutureTask.run(未知源)在java.util.concurrent java.util.concurrent.FutureTask上的.Executors $ RunnableAdapter.call(未知源)java.util.concurrent.ThreadPoolExecutor $ Worker上的java.util.concurrent.FutureTask.run(未知源) java.util.concurrent.ThreadPoolExecutor $ Worker.run中的.runTask(未知源)...(另外1個)原因:org.apache.solr.common.SolrException:初始化QueryElevationComponent時出錯。 在org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:601)的org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:601)的org.apache.solr.handler.component.QueryElevationComponent.inform(QueryElevationComponent.java:240) 。(SolrCore.java:830)...還有13個原因:java.lang.NumberFormatException:對於輸入字符串:java.lang.NumberFormatException.forInputString(未知源)處為“ MA147LL / A”。在org.apache.solr.schema.TrieField.izableToIndexed(TrieField.java:387)處的java.lang.Integer.parseInt(在Unknown Source)處的org.apache.solr.schema.TrieField.visibleToIndexed(TrieField)的parseInt(未知源) .java:378)org.org.apache.solr.handler.component.QueryElevationComponent $ ElevationObj。(QueryElevationComponent.java:136)org.org.apache.solr.handler.component.QueryElevationComponent.loadElevationMap(QueryElevationComponent.java:309) .apache.solr.handler.component.QueryElevationComponent.inform(QueryElevationComponent.java:223)... 15個以上,代碼= 500}描述服務器encou 發生內部錯誤({msg = SolrCore'collection1'由於初始化失敗而無法使用:初始化QueryElevationComponent。,trace = org.apache.solr.common.SolrException:錯誤。由於初始化失敗而導致SolrCore'collection1'不可用:錯誤初始化QueryElevationComponent。 在org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:251)在org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:251)在org.apache.solr.servlet.SolrDispatchFilter.doFilter (SolrDispatchFilter.java:158)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)在org.apache。 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)上的catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java: 127)在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)在org.apache.catalina.connector.CoyoteAdapter .service(CoyoteAdapter.java:298)位於org.apache.coyote.http11.Http11Processor.process(Http11Processor。 java:859)在org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:588)在org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:489)在java .lang.Thread.run(未知源)由:org.apache.solr.common.SolrException:初始化QueryElevationComponent時出錯。 在org.apache.solr.core.SolrCore。(SolrCore.java:835)在org.apache.solr.core.SolrCore。(SolrCore.java:629)在org.apache.solr.core.CoreContainer.createFromLocal(CoreContainer .java:622),位於org.apache.solr.core.CoreContainer.create(CoreContainer.java:657),位於org.apache.solr.core.CoreContainer $ 1.call(CoreContainer.java:364),位於org.apache.solr .core.CoreContainer $ 1.call(CoreContainer.java:356)在java.util.concurrent.FutureTask $ Sync.innerRun(未知源)在java.util.concurrent.FutureTask.run(未知源)在java.util.concurrent java.util.concurrent.FutureTask上的.Executors $ RunnableAdapter.call(未知源)java.util.concurrent.ThreadPoolExecutor $ Worker上的java.util.concurrent.FutureTask.run(未知源) java.util.concurrent.ThreadPoolExecutor $ Worker.run中的.runTask(未知源)...(另外1個)原因:org.apache.solr.common.SolrException:初始化QueryElevationComponent時出錯。 在org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:601)的org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:601)的org.apache.solr.handler.component.QueryElevationComponent.inform(QueryElevationComponent.java:240) 。(SolrCore.java:830)...還有13個原因:java.lang.NumberFormatException:對於輸入字符串:java.lang.NumberFormatException.forInputString(未知源)處為“ MA147LL / A”。在org.apache.solr.schema.TrieField.izableToIndexed(TrieField.java:387)處的java.lang.Integer.parseInt(在Unknown Source)處的org.apache.solr.schema.TrieField.visibleToIndexed(TrieField)的parseInt(未知源) .java:378)org.org.apache.solr.handler.component.QueryElevationComponent $ ElevationObj。(QueryElevationComponent.java:136)org.org.apache.solr.handler.component.QueryElevationComponent.loadElevationMap(QueryElevationComponent.java:309) .apache.solr.handler.component.QueryElevationComponent.inform(QueryElevationComponent.java:223)...另外15個,代碼= 500})阻止了它的發展 滿足這個要求。

我究竟做錯了什么?

UniqueKey必須為字符串。 您試圖將其設置為int。 嘗試將您的reference_id類型更改為字符串並重新索引。

在進入schema.xml之前,請刪除字段中的required="true"屬性

你有兩個解決方案

1)在您的data-config.xml中,將任何字段名稱指定為表中唯一的id。 我猜你的表中reference_id是唯一的

 <field column="reference_id" name="reference_id" />

將該字段的名稱屬性更改為如下所示的id

 <field column="reference_id" name="id" />

現在去你的schema.xml和搜索所需=“真”這個關鍵字字段名=“ID”如果存在,則檢查/添加屬性(這意味着需要你迫使ID),並刪除required=true其他領域。

如果不存在關鍵字字段名稱=“ id” ,則創建一個如下所示的新關鍵字

<field name="id" type="string" indexed="true" stored="true" required="true"></field>

在這里,您可以重新啟動並運行

2)找到keyWord 字段名稱=“ id” ,如果存在,則刪除該字段本身,同時刪除id標簽

在這里,您可以重新啟動並運行

希望任何一種方法都可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM