MySQL到Solr导入

时间:2012-02-24 09:53:15

标签: mysql solr lucene

我想用solr索引我的MySQL数据库表。 我可以在我的http://localhost:8983/solr/admin/dataimport.jsp?handler=/dataimport页面上看到为查询提取的结果,但是我在服务器端为每个提取的行获取了这些错误:

WARNING: Error creating document : SolrInputDocument[{eno=eno(1.0)={3}, ename=ename(1.0)={pravin}, sal=sal(1.0)={300}}]
org.apache.solr.common.SolrException: Document [null] missing required field: id

这是我的dataconfig.xml:

<dataConfig>
    <dataSource name="pravindb" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/pravindb" user="root" password="root" batchSize="-1" />
    <document>
        <entity name="ename" dataSource="pravindb" pk="eno" query="select* from emp">
            <field column="eno" name="eno"/> 
            <field column="ename" name="ename"/> <field column="sal" name="sal"/> 
        </entity>
     </document>
</dataConfig>

这是我添加到schema.xml的代码:

<fields>
    <field name="eno" type="int" indexed="true" stored="true" required="true" />
    <field name="ename" type="text" indexed="true" stored="true" multiValued="true"/>
    <field name="sal" type="int" indexed="true" stored="true" multiValued="true"/>
</fields>
<uniqueKey>eno</uniqueKey>
<defaultSearchField>ename</defaultSearchField>

这是我在solrconfig.xml中的请求处理程序:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
        <str name="config">d:\clg/Project/Workspace/TestSolr/solr/conf/my-data-config.xml</str>
    </lst>
</requestHandler> 

1 个答案:

答案 0 :(得分:1)

错误表示您尝试通过DataImportHandler添加的文档不包含id字段,这是必需的。您的查询不返回id列,或者您没有在导入处理程序配置中正确映射它。

<强>更新
根据您添加的配置,您的eno字段看起来就像uniqueKey一样,只要您的select *始终返回它就应该有效。 这里的问题是您在架构中有更多必需的字段,我猜您不需要。错误表示您已根据需要配置了id字段:您应该将其从架构中删除,或者如果您将其用于其他目的,请将其设置为可选。