solr5.3.1 mysql_Solr 5.3.1索引MySQL数据配置流程

先说说Solr来索引MySQL数据有什么优点~

我们的数据库表有很大的表,每天20w数据插入,表里已经累积了2900w的数据,而业务需求又需要一些比较实时的筛选count,遇到一些复杂的count的话MySQL返回结果都是以秒计算。严重拖慢了整个系统的性能。

所以有了搭建搜索引擎来索引MySQL里数据的需求。

之前虽然翻译了一篇5分钟搭建Solr的教程,然而到了导入MySQL这一步还是遇到了很多坑,泪。

因为Solr本身的文档写得不够美丽(滚,而且在网上搜导入MySQL数据的教程都是要么语焉不详,要么都是用的老版本的Solr,所以悲催地踩了两天坑,才终于搭好了基本功能。

下面做一下简单的记录:

1.安装

wget -c http://mirror.bit.edu.cn/apache/lucene/solr/5.3.1/solr-5.3.1.zip

unzip solr-5.3.1.zip

cd solr-5.3.1

bin/solr start

像上一篇说的一样,这样就成功启动了~

访问ip:port可以成功访问到solr的admin配置页

2.导入MySQL数据

导入MySQL数据需要MySQL的jdbc驱动,可以自己单独下载,并将jar文件拷贝到solr的dist目录下。

先创建新的core

bin/solr create -c cch

Setup new core instance directory:

/root/solr-5.3.1/server/solr/cch

Creating new core 'cch' using command:

http://localhost:8983/solr/admin/cores?action=CREATE&name=cch&instanceDir=cch

{

"responseHeader":{

"status":0,

"QTime":2820},

"core":"cch"}

这样就创建了一个以cch命名的core,生成的文件目录在

/{SOLR安装目录}/server/solr/cch

这时候在admin页面上进入core admin,可以看到名为cch的core已经成功创建完成了~

像下面这样:

4a00920b72a94cc619cafcb416920c7c.png

直接在页面上点Add Core的话会报错,必须用命令行来生成一个新core,这点上还是挺不友好的。所以才说你们这群java程序员哎

这时候在左边栏的下方用Core Selector选中刚才创建的cch的core,选择Dataimport,可以看到

sorry, no dataimport-handler defined!

然后在admin界面上还没有能让我添加dataimport-handler的地方,再次醉了。

这时候只能手动编辑:

/{SOLR安装目录}/server/solr/cch

添加

dataconfig.xml

注意,下面这两个lib是必须引入的,一个用来是solr的数据导入插件,另一个是mysql的jdbc连接插件。

完成之后在Core Admin里选中刚才的core,点击Reload,之后再选择cch的Core,会发现Dataimport标签页已经有页面了,开心!

3.配置文件

当然了,做完上面那些还不算完。

完整的配置项是需要修改

solrconfig.xml

=> 配置了dataimport操作的配置文件,我们这里指定为

dataconfig.xml

=> 这个文件名是在solrconfig里指定的,指定了solr在导入数据的时候的MySQL数据源定义,以及文档字段,全量、增量导入时的sql query语句和具体的字段,该文件中的字段在managed-schema里必须要有定义。

managed-schema

=> 这个文件在老版本中叫schema.xml,新版本中变成了managed-schema,需要留意。在该文件中定义了所有的字段名称、属性、是否索引、是否存储。尽量把作为查询条件和需要的字段设置为stored="true"

下面给出这几个文件的修改样例:

solrconfig.xml上面已经列过,这里不再赘述。

dataconfig.xml:

query="SELECT id, allocation, process_id, channel FROM g_service_worksheet">

managed-schema

...

...

id

managed-schema里会自带一个uniqueKey字段,如果你的表的唯一字段不是id,请自行修改,不过一般的表设计规范,自增字段和主键也都是这个id。

你可以以你自己的数据库配置为准,来修改上面的managed-schema,以及dataconfig.xml,需要注意一一对应,如果没有对应的话,可能会在查询的时候出错。

都配置好之后在Core的管理选项里选择Schema Browser,应该可以看到:

c331efcb7308736e86be3801a56a82e5.png

刚才添加的字段都可以在下拉列表里看到了,哟西。

这时候再去看看左栏的Logging。

卧槽,怎么还有报错,发现缺少admin-extra.html/admin-extra.menu-bottom.html/admin-extra.menu-top.html这三个文件。这个也很好解决,记得上一篇里的example里的DIH么?正是,去example-DIH目录里,把这三个文件拷贝到你的core目录的conf文件夹下。所以说你们这群java程序员,真是各种给人添麻烦呐

这一次,就基本算是都搞定了。

我们可以去Dataimport选项下开始导数据了。不用修改默认选项,只勾选自动refresh,然后点击execute。然后就能看到solr在飞快地全量导入你的MySQL数据啦!

200w的数据,增加几个查询条件,然后查看返回结果。

飞快啊有木有!

之后可以做什么:

本篇中只介绍了简单的全量导入,需要完成增量导入的话,另外还要配置Solr的dataconfig.xml

在对MySQL进行CRUD的时候,如果对即时性要求较高,需要直接触发Solr的增量导入和更新接口。

Solr老版本并不支持分布式,这不符合现在所有服务都需要高可用的趋势,没记错的话,为了支持分布式从5这个大版本开始有了SolrCloud。当然,应该也是需要更多的配置。

研究明白搜索引擎的实现原理,说服推行引入搜索引擎这样的优化方案。

在搭建过程中得到的一些经验:

如果界面响应正常,但是感觉有错,可以去Logging下查看,一般都是有报错的

schema修改了之后最好去Schema Browser里看一下下拉列表,是否生效,如果没有生效,看一下是不是在conf界面下既有managed-schema又有schema.xml,而两个文件在配置上不一致。如果是的话,请只保留managed-schema。solr会以managed-schema为准,虽然在Logging页面上会显示一个warning说schema.xml也能被load,但那是胡扯。

以上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值