我想用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>
最佳答案
该错误表明您尝试通过DataImportHandler
添加的文档不包含id
字段,这是必填字段。您的查询没有返回id列,或者您没有在导入处理程序配置中正确映射它。
更新
从添加的配置中,您的eno
字段看起来是uniqueKey,只要您的select *
始终返回它,它就应该起作用。
这里的问题是,我想您不需要架构中的更多必填字段。该错误表明您已根据需要配置了id
字段:您应该将其从架构中删除,或者如果出于其他目的需要将其设置为可选。