solr连接数据库查询数据库数据需要几步配置:
1、创建一个Core,创建Core的方法之前已经很详细的讲解过了,如果还是不清楚请参考“创建Core”;
2、导入mysql驱动包:
2.1、下载 mysql 驱动包:
mysql-connector-java-x.x.x.jar,绝大部分jar包在maven仓库都能找到,mysql驱动包在maven仓库中的下载链接是:http://central.maven.org/maven2/mysql/mysql-connector-java/;
2.2、将 mysql 驱动包导入 solr :
将下载下来的 mysql-connector-java-x.x.x.jar 拷贝到 solr\server\solr-webapp\webapp\WEB-INF\lib 下;
3、配置连接信息
3.1、找到新建的 Core 下的solrconfig.xml文件(solrconfig.xml 文件所在目录是: solr\server\solr\mycore\conf),打开找到第一个requestHandler,大体位置如下图:
在其后添加配置信息:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">${path}/data-config.xml</str> </lst> </requestHandler>
如下图:
3.2、创建 data-config.xml 文件:
建议尽量放在当前的 Core 的 conf 文件夹下,虽然可以任意指定。此处是在 solr\server\solr\mycore\conf 下创建了 mysql-db 文件夹作为 mysql 数据库属性文件的文件夹,然后创建 data-config.xml 文件,在文件中写入数据库连接信息dataSource以及数据库表对应的document,示例如下:
<?xml version="1.0" encoding="UTF-8" ?> <dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/solr" user="root" password="root" /> <document> <entity name="person" query="select * from person" deltaQuery="select * from person where name > '${dataimporter.last_index_time}'"> <field column="ID" name="id" /> <field column="name" name="p_name" /> <field column="age" name="p_age" /> </entity> </document> </dataConfig>
entry:对应于数据库中的数据库表,此处为 person 表;
field:数据库字段,对应于solr的schema.xml中的 field 字段。其中 column 表示数据库字段名,name 表示 field 的 name。
4、导入 solr 以来的库文件:
将 soft\solr\dist 下的 solr-dataimporthandler-7.1.0.jar 拷贝到 solr\server\solr-webapp\webapp\WEB-INF\lib 下。
或者,在solrconfig.xml文件中配置 <lib/>,代码如下:
5、在managed-schema文件中添加对应于数据库字段的field,建议在 solr 可视化界面操作。当然,一定要手动修改 managed-schema 文件也不是不可以,但是每次更改完需要重新加载 Core,或者粗暴一点直接重新启动solr也可以。那么,直接修改 managed-schema 文件的示例如下:把<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-\d.*\.jar" /> 加在<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" />前面
<field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/> <field name="name" type="string" indexed="true" stored="true"/> <field name="age" type="pint" indexed="true" stored="true"/>
6、如何在solr中查看数据?
以上我们做了所有的工作,来实践一下吧!
6.1、启动solr;
6.2、直接进入 solr可视化界面:http://localhost:8983/solr ,我们没有更改solr的端口,所以默认的端口是8983,主界面如下图:
6.3、接下来就是导入数据库数据,具体操作见下图:
6.4、查询导入的数据:
点击左侧菜单栏的 Query 然后直接点击右侧的 Execute Query 就可以看到导入的数据。