DIH(Data Import Handler)提供了导入关系型数据库的数据,XML等文件的功能。在Solr 6.1.0里面提供了一个DIH的Demo,可以用solr -e dih
来运行。
下面是一个用DIH将MySQL数据库中的数据导入Solr的例子:
编辑solrconfig.xml,添加request handler:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
在solrconfig.xml所在文件夹下,创建data-config.xml文件,指定数据库用户名和密码,要访问的表以及查询语句。
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test"
user="user-name"
password="password"/>
<document>
<entity name="person"
query="select id,personName,nativePlace from person">
</entity>
</document>
</dataConfig>
在solr的schema.xml中添加相应的field(id,personName,nativePlace),不然会无法识别。
在solr 6.1.0中,没有schema.xml这个文件,只有managed-schema,这个文件跟schema.xml文件的作用是一样的,只是不需要我们手动配置,在solr admin界面中添加即可
需要添加的field如下:
<field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
<field name="personName" type="string" indexed="true" stored="true"/>
<field name="nativePlace" type="string" indexed="true" stored="true"/>
将mysql-connector-java-5.1.xx以及dist文件夹下的solr-dataimporthandler-xx.jar放到core所在文件夹下面的lib文件夹(如果没有则手动创建一个)。
4.重启solr之后,在solr admin界面执行Dataimport->full-import即可。
这时候就可以查询到刚才添加的内容了:
还有更多可以配置的内容,详见参考资料。
参考资料:
[1]https://wiki.apache.org/solr/DataImportHandler
[2]https://wiki.apache.org/solr/DIHQuickStart