实际项目中,我们需要把已存在于数据库中的数据导入到solr索引库中,solr给我们提供了一个非常简便的方式,下面我们以mysql数据为例。
假设我们数据名叫database,数据表叫user,user里面有字段id、name、password;你的core下面的conf/schema.xml也做了相应的field(id,name,password)定义。
1、进入你的core(如collection1),新建一个目录lib。
2、拷贝mysql-connector-java-5.1.14.jar到新建的lib目录中。
3、从solr的解压文件目录中找到“/example/example-DIH/solr/db/conf”下的db-data-config.xml文件到你的core(如collection1)conf目录下,并更名为data-config.xml。
4、用编辑器打开data-config.xml的文件,清除里面的所有代码,复制以下代码:(注意以下中文注释在实际中应该删除,因为配置文件中不支持中文注释)
<dataConfig>
<!--根据自己的数据库情况进行修改-->
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/database" user="root" password="root"/><document>
<!-- name:自定义,但最好有意义;query:纯sql语句,此处查询用户表中的所有数据-->
<entity name="user" query="select * from user">
<field column="id" name="id" />
<!-- column:对应sql语句中的id,sql语句中如果你把它改成别名,此处填写别名; name:对应shema.xml配置文件中的字段id -->
<field column="name" name="name" />
<field column="password" name="password" />
</entity>
</document>
</dataConfig>
5、导入数据
打开http://localhost:8080/solr,界面如下:
从下拉列表中选择collection1,再点击Dataimport连接,显示如下界面:
勾选Commit、Optimize,下拉选择entity为user,点击Execute按钮,开始执行导入操作。
以上只是最简单的业务逻辑,复杂的业务逻辑需要<entity>嵌套