Solr6.3服务从Mysql上导入数据的方法
更新:HHH   时间:2023-1-7


这篇文章主要介绍“Solr6.3服务从Mysql上导入数据的方法”,在日常操作中,相信很多人在Solr6.3服务从Mysql上导入数据的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Solr6.3服务从Mysql上导入数据的方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

安装好solr6.3服务,我安装在centos7系统中,在/opt目录下

步骤1:

创建一个core,这里用hubin为例

步骤2:

  把mysql所需的jar包(mysql驱动包mysql-connector-java-5.1.38.jar)和solr-6.3.0/dist下的solr-dataimporthandler-6.3.0.jar和solr-dataimporthandler-extras-6.3.0.jar都复制到项目/opt/solr-6.3.0/server/solr-webapp/webapp/WEB-INF/lib/下。然后在solrconfig.xml文件中加入<lib dir="/opt/solr-6.3.0/server/solr-webapp/webapp/WEB-INF/lib/" regex=".*\.jar" />(就是把WEB-INF\lib里面的jar包配置到项目中,我这里用的是绝对地址。这段代码大约在solrconfig.xml的70多行处,前面有一堆类似的代码。)

步骤3:

  在MYSQL中新建一张表。我这里用的是Navicat管理工具进行创建的。这里的表名是goods。字段如下图所示:

步骤4:

  在solrconfig.xml的  <requestHandler name="/select">  

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  

             <lst name="defaults">

                   <str name="config">data-config.xml</str>

               </lst>

</requestHandler>  

然后在conf下新建data-config.xml文件。里面内容如下:

<?xml version="1.0" encoding="UTF-8"?>  

<dataConfig>  

 <dataSource name="source1" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/solrdata" user="root" password="220316" batchSize="-1" />  

  <document>  

        <entity name="goods" pk="id"  dataSource="source1"   

                query="select * from  goods"  

                 deltaImportQuery="select * from goods where id='${dih.delta.id}'"  

                deltaQuery="select id from goods where updateTime> '${dataimporter.last_index_time}'">    

         <field column="id" name="id"/>  

        <field column="name" name="name"/>  

           <field column="number" name="number"/>  

            <field column="updateTime" name="updateTime"/>  

     </entity>  

  </document>  

</dataConfig>  

说明:

  dataSource是数据库数据源。Entity就是一张表对应的实体,pk是主键,query是查询语句。Field对应一个字段,column是数据库里的column名,后面的name属性对应着Solr的Filed的名字。其中solrdata是数据库名,goods是表名。

  其中deltaQuery是增量索引,原理是从数据库中根据deltaQuery指定的SQL语句查询出所有需要增量导入的数据的ID号。然后根据deltaImportQuery指定的SQL语句返回所有这些ID的数据,即为这次增量导入所要处理的数据。核心思想是:通过内置变量“${dih.delta.id}”和 “${dataimporter.last_index_time}”来记录本次要索引的id和最近一次索引的时间。

最后在conf文件下的managed-schema配置field信息:

<field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" />  

<field name="name" type="string" indexed="true" stored="false"/>  

<field name="number" type="int" indexed="true" stored="false"/>  

<field name="updateTime" type="date" indexed="true" stored="true" />  

  <field name="_version_" type="long" indexed="true" stored="false"/>  

 <field name="_root_" type="string" indexed="true" stored="false" docValues="false" />  

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

其中id,name,number,updateTime是上面提到的数据库字段。下面三个field是系统本身的不能删除,否则会运行错误。

步骤5:

启动tomcat,并在URL中输入http://127.0.0.1:8080/solr/index.html路径。选择Core admin 输入如下设置:

  选择刚刚添加的goods实体进行索引操作:我们这儿可以选择full-import或者delta-import(增量索引),选择增量索引需要把clean的勾给去掉,不然会清除之前的,增量的索引的初衷是对新增或者修改的记录重新索引,会追加到原有的索引文件当中。当我们选择full-import的时候,最好就是把原有的索引文件给清空重新索引。

索引成功如下如所示:

使用query进行测试,输入sa查出了sa

这就成功的配置完了MYSQL数据库了,如果配置过程有啥问题可以参考我这个已经配置成功代码:

PS:solr-5.0 以上默认对schema的管理是使用managed-schema,不能手动修改,需要使用Schema Restful的API操作。如果要想手动修改配置,把managed-schema拷贝一份修改为schema.xml,在solrconfig.xml中修改如下:

<!-- <schemaFactory class="ManagedIndexSchemaFactory">  

   <bool name="mutable">true</bool>  

   <str name="managedSchemaResourceName">managed-schema</str>  

  </schemaFactory> -->  

<!-- <processor class="solr.AddSchemaFieldsUpdateProcessorFactory">  

      <str name="defaultFieldType">strings</str>  

      <lst name="typeMapping">  

        <str name="valueClass">java.lang.Boolean</str>  

        <str name="fieldType">booleans</str>  

      </lst>  

      <lst name="typeMapping">  

        <str name="valueClass">java.util.Date</str>  

        <str name="fieldType">tdates</str>  

      </lst>  

      <lst name="typeMapping">  

        <str name="valueClass">java.lang.Long</str>  

       <str name="valueClass">java.lang.Integer</str>  

       <str name="fieldType">tlongs</str>  

      </lst>  

      <lst name="typeMapping">  

        <str name="valueClass">java.lang.Number</str>  

        <str name="fieldType">tdoubles</str>  

      </lst>  

    </processor> -->  

    <schemaFactory class="ClassicIndexSchemaFactory"/>  

到此,关于“Solr6.3服务从Mysql上导入数据的方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注天达云网站,小编会继续努力为大家带来更多实用的文章!

返回云计算教程...