最近业务上需要开始使用solr,从官网上下载的6.6发现网上关于6.6的资料比较少,甚至solr in action 中也没有对应的示例,所以一路踩坑终于成功
分享如下:
1、包依赖 (问题 不知道放什么包或 找不到对应版本的包)
mysql-connector-java-5.1.43-bin.jar(http://download.csdn.net/download/nnmeo/9956245 也可以这mysql官网下载)
solr-dataimporthandler-6.6.0.jar (csdn下载 在本地solr/dist下一般也可以找到)
solr-dataimporthandler-extras-6.6.0.jar (csdn下载 在本地solr/dist下一般可以找到) 如果找不到 可以用 find 命令 搜索一下(find ./ -name '*dataimport*')
把这三个包统统放到 solr/server/solr-webapp/webapp/WEB-INF/lib 下
2、配置solrconf.xml (如果你用的是cloud模式 找不到这个文件 只能在网页上配置,存储在zookpeer中 后面会讲)
增加一个requestHandler如下:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
这里只是声明了会有一个dataimport 操作,数据详情配置在 同目录的data-config.xml中配置
data-confi.xml 内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1/dbname" user="test"
password="test" batchSize="-1"/>
<document name="video">
<entity name="video" pk="id" query="select id,name,level from video ">
<field column="id" name="id" />
<field column="name" name="name" />
<field column="level" name="level" />
</entity>
</document>
</dataConfig>
solr中有一个很重要的概念 --文档:这个对于本例来说一行记录就是一个文档。
上面的配置中
<document name="video">
video是指实体名称 可以和表名一致
<field column="id" name="id" />column 为映射到solr中的名称(在manage-schema中会用到),name为mysql表中的字段的名称
3、配置manage-schema (solr6.6已经没有schema.xml,可以直接修改这个文件,也可以在网页上配置)
设置一个唯一key <uniqueKey>id</uniqueKey>
<field name="id" type="tlongs" multiValued="false" indexed="true" required="true" stored="true" />
并且把这个key的树形设置成 multiValued="false" indexed="true" required="true" stored="true" 这很重要,uniquekey 会保证你重复建索引时 数据不会重复
至此 重启solr 在页面中找到对应的core点击dataimport 并执行 execute 查看logging,如果没有wanning 就ok了
注:配置文件的位置在 core下面而不是在安装目录下
如在使用中遇到问题欢迎留言交流!!