Solr——从postgresql数据库导入数据

时间:2021-04-03 14:23:16

1,配置准备

本文的前提是你已经配置好了solr,并新创建了一个core,我们下面都会按照前一篇文章中的core_demo为基础开始

2,修改soreconfig.xml

在soreconfig.xml的<requestHandler name="/select" class="solr.SearchHandler">上面添加如下代码:

    <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文件,然后配置数据库相关属性

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version= "1.0"  encoding= "UTF-8" ?> 
<dataConfig>
     <dataSource name= "source1"  type= "JdbcDataSource"
               driver= "com.mysql.jdbc.Driver"
               url= "jdbc:mysql://127.0.0.1:5432/address"
               user= "root"
               password= "123456"  />
     <document>
        <entity name="company" dataSource="source1" pk="id" query="SELECT company.name,company.id,company.address FROM company">
            <field column='name' name='name' />
            <field column='id' name='id' />
                                  <field column='address' name='address' />
         </entity>
     </document>
</dataConfig>

 

  关于详细的配置请参照:http://blog.csdn.net/boolbo/article/details/50352331

    官方wiki:https://cwiki.apache.org/confluence/display/solr/

3,配置managed-schema.xml

Solr——从postgresql数据库导入数据
<?xml version="1.0" encoding="UTF-8" ?>

<schema name="example" version="1.6">
  
   <field name="billid" type="int" indexed="true" stored="false"/>
   <field name="name" type="string" indexed="true" stored="true"/>
   <field name="address" type="string" indexed="true" stored="true"/>
   <field name="cityname" type="string" indexed="true" stored="true"/>
   <field name="createtime" type="date" indexed="true" stored="true"/>
   
   <field name="_version_" type="long" indexed="false" stored="false"/>
   <field name="text" type="string" indexed="true" stored="false" multiValued="true"/>
   <field name="_root_" type="string" indexed="true" stored="false" docValues="false" />


    <uniqueKey>billid</uniqueKey>

    <fieldType name="string" class="solr.StrField" sortMissingLast="true" />
    <fieldType name="int" class="solr.TrieIntField" docValues="true" precisionStep="0" positionIncrementGap="0"/>
    <fieldType name="long" class="solr.TrieLongField" docValues="true" precisionStep="0" positionIncrementGap="0"/>
    <fieldType name="date" class="solr.TrieDateField" docValues="true" precisionStep="0" positionIncrementGap="0"/>


</schema>
Solr——从postgresql数据库导入数据

网上很多教程说到schema.xml,这个文件是solr之前的版本中用到的,6.6版本是不需要的,直接修改上面的文件就可以。

4,拷贝jar

拷贝solr-6.6.3\dist路径下的solr-dataimporthandler-6.6.3.jar,solr-dataimporthandler-extras-6.6.3.jar 到E:\tomcat-8.5.28\webapps\solr\WEB-INF\lib目录下

同时拷贝postgresql-42.2.5.jar链接jar到该目录下 

不需要修改任何配置文件即可,继续下面的步骤

5,修改jar配置路径(如果没有的话)

继续打开solrconfig.xml 找到lib标签,修改jar的路径,下面贴上我本地修改后的路径

Solr——从postgresql数据库导入数据

<lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" />

<lib dir="${solr.install.dir:../../../..}/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-clustering-\d.*\.jar" />

<lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\d.*\.jar" />

<lib dir="${solr.install.dir:../../../..}/contrib/ltr/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-ltr-\d.*\.jar" />

<lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" />

Solr——从postgresql数据库导入数据

不需要添加任何jar即可

6,重启tomcat,刷新solr页面即可看到下面界面

Solr——从postgresql数据库导入数据

 full-import 全量导入,delta-import-增量导入

点击Execute就可以导入了,点击左侧Query可查询导入的数据

Solr——从postgresql数据库导入数据