zoukankan      html  css  js  c++  java
  • 使用 Solr 创建 Core 并导入数据库数据

    1. 输入 http://localhost:8080/solr/index.html 来到 Solr 的管理界面;

    2. 点击左侧 Core Admin --> Add Core,然后输入自己想要的名字即可,输入完成点击 Add Core,如下图:

    如果出现以下这种错误:Error CREATEing SolrCore 'log_core': Unable to create core [log_core] Caused by: Can't find resource 'solrconfig.xml' in classpath or 'E:jdworkspace-solrsolrlog_core',则说明没找到需要的配置文件;

    修改步骤如下:

      (1)找到 Solr 目录(注意不是 Tomcat 下的 Solr,也不是工作空间的 Solr):E:jdsolr-6.6.2serversolrconfigsetssample_techproducts_configsconf,然后复制 conf 这个目录到工作空间的 Solr 中的 log_core(刚才创建的 Core 目录名) 目录下(我的地址:E:jdworkspace-solrsolrlog_core);

      (2)然后重新点击 Add Core 就会发现创建 Core 成功;

    3. 使用 dataimport 导入数据库数据;

      (1)首先导入三个 jar 包到 .../webapp/solr/WEB-INF/lib/ 目录下:分别是 solr-dataimporthandler-6.6.2.jar(目录地址 .../solr-6.6.2/dist)、solr-dataimporthandler-extras-6.6.2.jar(目录地址 .../solr-6.6.2/dist)、mysql-connector-java-5.1.34.jar(根据数据库类型导入不同的 jar 包);

      (2)找到 E:jdsolr-6.6.2exampleexample-DIHsolrdbconfdb-data-config.xml 文件,将其复制 E:jdworkspace-solrsolrlog_coreconf 目录下,并改名为 data-config.xml;

      (3)打开 E:jdworkspace-solrsolrlog_coreconfsolrconfig.xml 文件,并在 </config> 标签之前添加以下内容:

    1  <requestHandler name="/dataimport" class="solr.DataImportHandler">
    2       <lst name="defaults">
    3             <str name="config">data-config.xml</str>
    4       </lst>
    5  </requestHandler>

      (4)打开刚才复制的 data-config.xml (E:jdworkspace-solrsolrlog_coreconfdata-config.xml)文件,并进行如下编辑:

     1 <dataConfig>
     2     <!-- 这是 mysql 的配置 -->
     3     <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/new" user="root" password="123" />
     4     <document>
     5         <!-- name 属性,就代表着一个文档,可以随便命名 -->
     6         <!-- query 是一条 sql,代表在数据库查找出来的数据 -->
     7         <entity name="log" query="select * from t_log">
     8             <!-- 每一个 field 映射着数据库中列与文档中的域,column 是数据库列,name 是solr 的域(必须是在 managed-schema 文件中配置过的域才行) -->
     9             <field column="logId" name="id"/>
    10             <field column="modelName" name="chat_type"/>
    11             <field column="operUser" name="chat_send"/>
    12             <field column="operTime" name="chat_receive"/>
    13             <field column="operType" name="chat_content"/>
    14             <field column="operContent" name="chat_date"/>
    15         </entity>
    16     </document>
    17 </dataConfig>

      (5)在 managed-schema 文件中配置需要的域

      介绍:

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

        name:域名

        type:域的类型,必须匹配类型,不然会报错

        indexed:是否要作索引

        stored:是否要存储

        required:是否必填,一般只有 id 才会设置

        multiValued:是否有多个值,如果设置为多值,里面的值就采用数组的方式来存储,比如商品图片地址(大图,中图,小图等)

      第一种配置域(field):

    1    <!-- 配置自定义的 field -->
    2    <field name="log_modelName" type="string" indexed="false" stored="true"  />
    3    <field name="log_operUser" type="string" indexed="false" stored="true"  />
    4    <field name="log_operTime" type="string" indexed="false" stored="true"  />
    5    <field name="log_operType" type="string" indexed="false" stored="true"  />
    6    <field name="log_operContent" type="string" indexed="false" stored="true"  />

      第二种配置动态域(dynamicField):

    1    <dynamicField name="log_*" type="string" indexed="false" stored="true"  />

    4. 开始进入后台导入数据库数据,选择 log_core --> DataImport --> Execute,然后就开始执行导入数据库数据,如果数据多的话可以点击 Refresh Status 查看数据导入进度,导入成功会出现如下界面:

     5. 点击 Query --> Execute Query 进行数据的查询:

    6. 创建 Core 并导入数据库数据完结。

  • 相关阅读:
    Atcoder D
    51nod 1201 整数划分(dp)
    Atcoder D
    Atcoder C
    codeforces 812 E. Sagheer and Apple Tree(树+尼姆博弈)
    codeforces 811 D. Vladik and Favorite Game(bfs水题)
    codeforces 811 E. Vladik and Entertaining Flags(线段树+并查集)
    codeforces 811 C. Vladik and Memorable Trip(dp)
    1449 砝码称重(思维)
    SQL大量数据查询的优化 及 非用like不可时的处理方案
  • 原文地址:https://www.cnblogs.com/yjq520/p/8426937.html
Copyright © 2011-2022 走看看