Solr6集成mysql导入数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28893679/article/details/89336704

参考:https://gist.github.com/maxivak/3e3ee1fca32f3949f052
这次为了方便solr直接导入数据库中的数据,整理了一下流程。条件是solr已经成功安装且已经启动。
1、新增一个myproduct3的core:
/home/wuyonghu/solr/solr-6.4.2/bin/solr create -c myproduct3 -force
在这里插入图片描述
2、此时在界面上查看该core的详细信息如下:此时该core中是没有任何数据的。
在这里插入图片描述
3、进入到/home/wuyonghu/solr/solr-6.4.2/contrib/dataimporthandler目录下,创建一个lib文件夹(如果已经存在可以不用创建)
在这里插入图片描述
4、在该lib目录下添加java连接mysql的驱动包:至于驱动包怎么获取,直接从maven去拿就行。这里添加驱动包主要的作用是solr在执行导入的时候需要连接数据库。
在这里插入图片描述
5、进入到/home/wuyonghu/solr/solr-6.4.2/server/solr/myproduct3目录下,这里我们刚才创建的core,其目录结构信息如下:
在这里插入图片描述
6、修改myproduct3的solrconfig.xml文件,将
/home/wuyonghu/solr/solr-6.4.2/server/solr/myproduct3/conf/solrconfig.xml
在如下位置,添加这两行配置信息。添加该配置的作用是让core知道驱动包的位置。

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

在这里插入图片描述
7、继续在如下文件中添加dataimport。该配置信息的主要作用是告诉core,当进行数据导入的时候,根据哪个配置文件去获取数据源。
/home/wuyonghu/solr/solr-6.4.2/server/solr/myproduct3/conf/solrconfig.xml

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
    <str name="config">data-config.xml</str>
    </lst>
</requestHandler>

在这里插入图片描述
8、在/home/wuyonghu/solr/solr-6.4.2/server/solr/myproduct3/conf目录下新增data-config.xml文件。其配置信息如下图所示:

<dataConfig>
<dataSource type="JdbcDataSource" 
            driver="com.mysql.jdbc.Driver"
            url="jdbc:mysql://192.168.10.102:3306/solr" 
            user="root" 
            password="root"/>
<document>
  <entity name="product"  
    pk="id"
    query="select id,name from products"
    deltaImportQuery="SELECT id,name from products WHERE id='${dih.delta.id}'"
    deltaQuery="SELECT id FROM products  WHERE updated_at > '${dih.last_index_time}'"
    >
     <field column="id" name="id"/>
     <field column="name" name="name"/>
  </entity>
</document>
</dataConfig>

在这里插入图片描述
9、数据源和数据sql已经配置完成,接下来需要配置索引。

10、拷贝/home/wuyonghu/solr/solr-6.4.2/server/solr/myproduct3/conf目录下的managed-schema文件:
cp /home/wuyonghu/solr/solr-6.4.2/server/solr/myproduct3/conf/managed-schema /home/wuyonghu/solr/solr-6.4.2/server/solr/myproduct3/conf/schema.xml

11、需要在schema.xml文件中配置data-config.xml中添加的field。由于data-config.xml中只有id和name两个field,而id是已经存在的,所以只需要添加name即可。

<field name="name" type="text_general" indexed="true" stored="true"/>

在这里插入图片描述
12、至此,配置已经完成了。接下来进行验证。

13、solr 的日志信息在/home/wuyonghu/solr/solr-6.4.2/server/logs/solr.log。打开该日志信息,查看日志详情:
在这里插入图片描述
14、登录到可视化界面,选择myproduct3(注意,需要重启)
在这里插入图片描述
15、查看信息如下:
在这里插入图片描述
16、确认完毕后,执行全量导入:
在这里插入图片描述
17、查看日志信息显示是否正常:如下日志信息显示已经成功添加了16条数据信息。
在这里插入图片描述
18、此时查看数据信息,确实已经添加了16条:
在这里插入图片描述
19、额外提一点,就是如果此时去查询,发现只能查到id
在这里插入图片描述
20、那么如果我想要索引到name呢?

1. add schema.xml file into your solr/core1/conf directory. 
2. copy all content of managed-schema into schema.xml
3. add the new fields into schema.xml.
4. delete the managed-schema.xml
5. restart the solr it will create a managed-schema.xml and will move schema.xml to scheam.bkp

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_28893679/article/details/89336704
今日推荐