美文网首页
solr数据导入的两种方法

solr数据导入的两种方法

作者: 就这些吗 | 来源:发表于2020-01-24 18:27 被阅读0次

    数据一般都是来自数据库,而导入则有两种方式,一种是通过solr的管理页面和配置直接连接数据库,还有一种就是通过项目中代码操作(在这个项目中是用Mybatis将数据库中数据查出来之后再存到solr中)

    如果~~你实在不想配置,没关系,在百度云中我上传了两个版本,solr-7.7.2-jetty是没有配置数据库链接的版本,solr-7.7.2-jetty-connectDB是配置了数据库链接的版本,里面均含有springboot-solr项目练手这个项目的实体类配置、和数据库中的数据,直接启动即可

    链接:https://pan.baidu.com/s/1h2279pQZIDgCMLiP4DREbA
    提取码:ziem

    第一种:通过配置文件再管理页面导入

    1.先建立个数据库,往里面加点数据。

    SET FOREIGN_KEY_CHECKS=0;
    
    -- ----------------------------
    -- Table structure for info
    -- ----------------------------
    DROP TABLE IF EXISTS `info`;
    CREATE TABLE `info` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `username` varchar(255) DEFAULT NULL,
      `email` varchar(255) DEFAULT NULL,
      `qq` varchar(255) DEFAULT NULL,
      `password` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=33326 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of info
    -- ----------------------------
    INSERT INTO `info` VALUES ('1', 'tycoding', '123@qq.com', '8989723', 'sdhsh90');
    INSERT INTO `info` VALUES ('2', 'tumo', 'tycoding@163.com', '8989723', 'tumo');
    INSERT INTO `info` VALUES ('3', '涂陌', '123@163.com', '8989723', 'tycodingss');
    INSERT INTO `info` VALUES ('4', '往吝', '992987642@qq.com', '992987642', '123456');
    

    2.上maven仓库下一个mysql-connector的jar包。
    找到solr-7.7.1/dist下的solr-dataimporthandler-7.7.1.jar,solr-dataimporthandler-extras-7.7.1.jar。一共是3个jar包。
    把这三个jar包拷贝到solr-7.7.1/server/solr-webapp/webapp/WEB-INF/lib文件夹下


    image.png
    image.png

    拷贝到:


    image.png

    3.修改solr-7.7.1/server/solr/new_core/conf/db-data-config.xml,注意账号密码与自己的数据库对应 <field column="username" name="item_username"/>中,column为数据库的列名,name为managed-schema中配置的field的name


    image.png
    image.png
    <dataConfig>
      <dataSource name="springboot_solr" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/springboot_solr" user="root" password="root" batchSize="-1" />
      <document name="springboot_solr">
        <entity name="info" pk="id" query="select * from info">
            <field column="id" name="id"/>
            <field column="username" name="item_username"/>
            <field column="email" name="item_email"/>
            <field column="qq" name="item_qq"/>
            <field column="password" name="item_password"/>
        </entity>
      </document>
    </dataConfig>
    
    

    4.运行solr后到Dataimpot就可以看到配置文件了,没看到的点下展开就行,记得勾选下面的Auto-Refresh Status,否则需要自己去刷新状态看是否导入完成,到这里直接点Execute就行啦。出现Indexing completed就说明导入完成了。
    如果只导入了一部分数据,有些字段没有导入,请看下你的配置文件的字段有没有写错


    image.png
    image.png

    5.执行完毕后就可以去Query里点下Execute Query来看下数据进来没啦,关于这部分Query的使用我会单独开个文章讲。留个坑!


    image.png

    第二种,项目中代码操作加载数据(这种方式也被留在了项目展示的代码里,可以去github上下载,这里作简单介绍)。

    1.首先就是要有对应的实体类和@Field注解,这个注解是为了当实体类与solr中配置的field名字不同的时候做映射。


    image.png

    2.创建一个Utils类,用来查出来mysql中的数据后并提交,其中searchMapper为Dao层,solrTemplate为spring封装的用来操作solr的对象,类似于redisTemplate。
    这里不做配置性说明,需要的可以down下来的代码。


    image.png

    3.也是最重要的一步,因为这个项目是springboot项目,需要在项目启动的main方法里就执行这个SolrUtils里的操作,因此需要在启动时候获取到ApplicationContext,再通过getBean方法获取到里面注册的bean对象,再调用这个对象的方法来完成导入操作。
    第二次运行就可以把导入的方法注释掉了,否则会重复导入


    image.png

    相关文章

      网友评论

          本文标题:solr数据导入的两种方法

          本文链接:https://www.haomeiwen.com/subject/skrcthtx.html