搜索引擎solr系列---core的创建及数据全量导入

有关官方配置的步骤,我已经在这篇文章里写了,连接是官方配置solr步骤(一)—solr下载及单节点的启动、配置说明

大家都知道,solr是首先要将数据建立出索引,而建立成的索引文件就存放到solrHome里,因为一个solr服务器因为需求,将来会生成很多个不同的数据源索引,因此,solrHome里又以core来分别存储不同数据源的索引以及相关数据源链接信息等等。

solrHome与core的关系是包含关系,即solrHome里包含多个core,core里边才有索引文件。

如果不知道solrHome如何配置,请参照搜索引擎solr系列—安装步骤


通过搜索引擎solr系列—安装步骤配置完成后,访问页面以下地方是无法打开的,如图:
这里写图片描述

补充一句:如果你能访问以上solr的首页面(有些版本不是admin.html,是index.html),说明你的solrHome是配置正确的。

通过这一段时间学习,感觉上,solr必须要创建core才能使用,否则,它无法去创建索引、增量索引、删除索引以及查询数据。

创建core的步骤大体如下:

  1. 拷贝core的配置文件。
  2. 配置数据库、引入数据库驱动包。
  3. 配置solr客户端,新建core。

具体步骤如下:

一、新建core文件夹

首先找到你的solrHome文件夹,solrHome的具体配置方法在搜索引擎solr系列—安装步骤文章中有说明,我的solrHome在D:\Tomcat9Solr\solrHome。


在该文件夹中创建一个core文件夹,名字随便起,不过,我觉得一个core可能是与一个数据库表对应,所以起名字与数据库表对应,这样更好区分,这个看个人喜好,比如我打算,要为数据库中的solr_test表建立索引,使用solr查询,那就在这里创建一个solrTest文件夹。

二、拷贝core的配置文件

将D:\Tomcat9Solr\solrHome\configsets\sample_techproducts_configs文件夹中的conf文件夹整个拷贝到上一步中新建的solrTest文件夹中。具体内容如下:
这里写图片描述

三、配置数据库,引入数据库驱动包。

1、打开上图中的solrconfig.xml文件,在该文件的config标签中添加如下内容:

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

2、该段内容指定的是一个data-config.xml文件,这个文件是需要自己新建的,这里面就是配置数据库相关的连接,以及数据导入的字段、全量导入索引和增量导入索引等等,还有别的功能,我目前只知道这些。以下配置仅为全量索引导入配置。

在D:\Tomcat9Solr\solrHome\solrTest\conf文件中,新建一个data-config.xml,与solrconfig.xml文件同级。内容如下:

<dataConfig> 
<!--dataSource标签配置数据库相关的信息-->
<dataSource name = "ds_1" type="JdbcDataSource"   
    driver="oracle.jdbc.driver.OracleDriver"                      url="jdbc:oracle:thin:@//192.168.1.155:1521/ZNXDDB"   
    user="old" password="old"/>  
<document>
<!--以下的dataSource指定上边的dataSource标签中的name属性,并不是必须要加的,除非你配置了多个数据源,这里我是一个数据源,所以,下边的dataSource属性是可以去掉的,另外,pk属性指定的是manage-schema文件中的uniqueKey标签中的值,即主键-->  
<entity name="SolrTest" dataSource="ds_1"  PK="id"
          query="SELECT id,username,yhbz FROM SOLR_TEST">
          <!--以下的字段column属性对应数据库中字段名称,name是对应solr这边配置的名称,注意id,默认名称即为id,表示solr这边一条数据的主键,以下三个是要在solr这边中建立索引的字段,比如数据库中有10个字段,我只需要为3个字段建立索引关系,那这里就写3个就好了
          如果数据库中的主键不是id,比如是objectId,那上边的query需要为它起一个别名为id即可-->
          <field column="id"  name="id" />
          <field column="username"  name="username" />
          <field column="yhbz" name="yhbz" />
    </entity>
  </document>  
</dataConfig>  

对以上配置的解释及注意点:

solr对于索引的建立,有两种,全量索引和增量索引。
全量索引是将数据库中所有的要建立索引的数据,重新全部建立一遍,对于大量数据来说,这肯定特别消耗时间的一种事。
增量索引是将数据库中那些新增数据建立起索引,加入到solr查询中。以上我的配置,只是用于全量索引,关于增量索引,有些注意点,我将在下一篇文章中单独说一下我遇到的坑。

3.因为上边的数据库是用的oracle数据库,因此需要引入oracle数据库驱动包,我是用的是ojdbc6-11.2.0.4.0-atlassian-hosted.jar 这个驱动包,大家可以从网上找一个,将该包放入D:\Tomcat9Solr\webapps\solr\WEB-INF\lib中,如图所示:

这里写图片描述

四、配置managed-schema.xml(早期版本叫schema.xml)文件

1.该文件配置的内容为solr索引中引入字段的类型设置,与data-config.xml中配置的field标签内容是对应的。在data-config.xml同级目录中找到managed-schema.xml文件打开,添加如下配置:

<!--  name属性为引入字段在solr中的名称。
      type表示类型,solr中会有很多类型,这个在managed-schema中你会看到很多的fieldType标签,都是solr中的类型,具体可以百度看具体的作用。
      indexed我理解的表示是建立索引,true为建立,如果为false,则该字段不能作为条件查询出来,如果不小心设置为false,改正后需要重建索引,特别注意这个。
      stored true表示在solr中显示,如果这里设置为false,将会在solr中查询不到。
      multiValued false表示关联查询字段,这个我不太理解。请再看别人的吧。-->
 <field name="username" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="yhbz" type="string" indexed="true" stored="true" multiValued="false"/>

关于以上配置的解释:
在managed-schema文件中,已经默认配置了很多可能配置的字段,包括id,如下边的代码块中的配置,所以这里不需要再配置id的内容,因为id为默认的,已经配置了id的相关配置,只需要再增加以上两个即可。

2.在managed-schema中你还会找到如下两行的标签

<!--请注意,能设为uniqueKey的字段,必须要有required="true"的属性-->
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<!--请注意,能设为uniqueKey的字段,必须要有required="true"的属性-->
 <uniqueKey>id</uniqueKey>

这个表示solr中的主键,一般与数据中的主键对应,默认为这个名字。

五、solr客户端配置core,建立索引

1.配置好前边的步骤,重启tomcat,(下边图中有不重启的方法),访问solr的客户端,我的是http://192.168.1.170:8983/solr/admin.html ,找到如下图的位置:

这里写图片描述

2.在如图add core面板中,添加core,name和instanceDir都命名为solrTest(与前边配置中在solrHome文件夹中建立的solrTest文件夹名称一致),直接点下边的add core即可,就会发现下边多出一个solrTest的core。

这里写图片描述

3.如上图,点开core selector,选择solrTest,即会有如下的列表出现。然后如图所示执行全量索引导入操作。

这里写图片描述

4.如果你的数据量很小,你点击execute后,过一会,点击Refresh Status,会出现如下图的提示

这里写图片描述

5.这样的情况,就表示你已经导入成功了。然后再点击左侧面板中的Query,直接点击下边的Execute Query即可。右侧就会查询到数据。即表示导入成功。

这里写图片描述

以上即为配置全量导入的core创建过程。其实我觉得solr的core创建好傻,又要复制文件夹,复制配置文件,改好配置,然后再到solr客户端上配置上,这也太繁琐了,但是后来我想了想觉得也有道理,因为毕竟数据库的配置不是想加就加的,加这么多防备,就是让你在后台配置好了,客户端才能创建core,建立索引等等,更加安全一些。下一篇会写增量导入以及它关于不同数据库注意的地方。


版权声明:本文为wohaqiyi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。