老鬼的博客 来都来啦,那就随便看看吧~
solr篇四:创建一个新的core并导入数据库数据
发布于: 2019-12-07 更新于: 2023-11-08 分类于:  阅读次数: 

一:相关参考文档

二:导入SQlserver数据

2.1 步骤如下

1
2
3
4
5
6
7
1.创建core,这里不做阐述,上篇已经讲过
2.引入sqlserver的驱动包
3.在core/conf下创建db-data-config.xml文件
4.修改core/conf/solrconfig.xml文件,引入上步创建的db-data-config.xml,和修改lib库
5.修改core/conf/managed-schema文件,增加相关索引文件
6.重启solr服务
7.在admin ui选择db_core,执行full-import

2.2 引入驱动包

1
2
solr根目录下的dist文件夹是相关的jar包的存放位置,我这里在/dist/下创建一个专门存放
自定义jar包的目录,名字是my-lib,然后把sqlserver的驱动包放进入

2.3 创建测试的表

  • 介绍
1
我这里的是SQL Server2012数据,database是db_solr,表名是:solr_person
  • sql文件下载
1
是用navicat导出来的sql脚本

2.4 创建db-data-config.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<dataConfig>
<!-- 定义datasource,driver是驱动,url是数据库的连接地址,user是用户名,password是密码 -->
<dataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://localhost:51216;DatabaseName=db_solr" user="sa" password="EIKYJnnifZgBRMa0" />
<document>

<!-- 定义实体类,这里的定义可以像java定义entity一样 -->
<!-- query是做full-import数据导入使用,根据需求定义的query sql -->
<!-- column是数据库的字段名,name是solr中定义的对应的名称,我这里定义的是和java entity一致的 -->
<entity name="Person" transformer="RegexTransformer" query="select * from solr_person;">
<field column="id" name="id" />
<field column="name" name="name" />
<field column="sex" name="sex" />
<field column="mobile" name="mobile" />
<field column="email" name="email" />
<field column="address" name="address" />
<field column="brief_info" name="briefInfo" />
<field column="detail_info" name="detailInfo" />
<field column="insert_time" name="insertTime" />
<field column="update_time" name="updateTime" />
</entity>
</document>
</dataConfig>

2.5 修改solrconfig.xml和lib库

  • 将solr/dist/*.jar复制到solr/dist/my-lib下
  • 在solrconfig.xml的lib节点增加如下元素
1
2
3
<!-- 将自定义的lib库加入进来   renjie -->
<lib dir="${solr.install.dir:../../../..}/dist/my-lib/" regex=".*\.jar" />
<!-- end -->
  • 在solrconfig.xml的文件底部引入db-data-config.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!-- 引入db-data-config.xml文件  (renjie) -->

<!--
<updateRequestProcessorChain name="uuid">
<processor class="solr.UUIDUpdateProcessorFactory">
<str name="fieldName">id</str>
</processor>
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.DistributedUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
-->

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">db-data-config.xml</str>
<!-- solr必须是有id的,如果你的表没有主键,则需要加入下面的一句话,uuid对应的就是上面的updateRequestProcessorChain -->
<!-- <str name="update.chain">uuid</str> -->
</lst>
</requestHandler>
<!-- end -->

2.6 修改core/conf/managed-schema文件

  • 在managed-schema底部增加索引
1
2
3
4
5
6
7
8
9
10
11
12
<!-- 添加索引字段 (renjie) -->
<uniqueKey>id</uniqueKey>
<field name="name" type="string" indexed="true" stored="true" />
<field name="sex" type="string" indexed="true" stored="true" />
<field name="mobile" type="string" indexed="true" stored="true" />
<field name="email" type="string" indexed="true" stored="true" />
<field name="address" type="string" indexed="true" stored="true" />
<field name="briefInfo" type="string" indexed="true" stored="true" />
<field name="detailInfo" type="string" indexed="true" stored="true" />
<field name="insertTime" type="pdate" indexed="true" stored="true" />
<field name="updateTime" type="pdate" indexed="true" stored="true" />
<!-- end -->

2.7 重启solr服务

1
2
1. solr stop -all
2. solr start
*************感谢您的阅读*************