设为首页 收藏本站
查看: 1003|回复: 0

[经验分享] 优化solr全量建索引,减少索引时间

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-12 09:43:52 | 显示全部楼层 |阅读模式
  优化solr全量建索引

  主要优化从数据库取数据这一块。
  

  先简单为读取某个单表数据:该表数据很多娄,数据库为MySQL。
  旧的建索引设计:
  之前的设计是分段读取数据,可以按自增主键分段或者按记录更新的时间截分段取。但由于数据模型是可增删改查,这种更新会导致按自增id的数据在有些地方比较稀疏,而按记录的更新时间截,也有可能在某个时间段里更新大量数据,所以也会有不同时间段数据过稀或者过密的情况,这种情况导致分段取数据调控不方便。。
  

  所以一直以来solr的更新瓶颈一直是在读取数据那一块,因为是取数据跟发送数据多线程进行,实践得出花费的时间更多是在等待读取源。所以如果可以提高读取数据源的效率,那么索引时间可以缩短不少时间。
  

  

  新的建索引设计 :
  现在使用另一种方式读取数据源:
  

  1)首先将远程的某个表数据写入到文件data.txt,字段以一定特殊符号间隔,方便分析,每行一条记录
  

  2)将远程文件data.txt同步到本地机器,并处理掉某些特殊符号影响解析。
  a)这里要注意文件的一些特殊符号,导致分析失败。比如字段里包含有换行符或者分隔符。
  
  b)dump整个表数据到文件很快,记得写2g大小(300万)的数据,消耗30秒左右.
  c)使用linunx的rsync脚本拷贝远程文件到本地,同步时间100秒左右。
  
  3)解析本地数据文件data.txt,并批量提交给solr
        a) 脚本程序要配置的dump 使用sql语句的字段,所以这里可以使用对应的sql(取字段名列表),获取该sql拿到的字段列表。有严格的顺序对应。
  
  b)以同样的顺序解析数据存到map.
  c)业务逻辑处理记录,封装数据包批量提交solr
  

  4) solr提交的方式的优化:(主要是索引脚本跟solr服务在同一台机)
  a) solr 服务使用多core协助,一写core_w一读core_r
  b)使用EmbeddedSolrServer嵌入式提交给本地solr服务core_w。
  c)提交完数据后,发送命令切换solr的两个core.将core_w与core_r互换
  d)同步索引,将新的core_r的索引数据同步给其它子机的core_r
  

  

  测试过后发现EmbeddedSolrServer这种方式提高不了多少速度。所以还是可以采用http方式提交。
  不过采用了读取本地文件这种建索引方式,可以提高不少速度,时间只需要原先的1/3左右。
  

  

  

  

  

  

  http://write.blog.iyunv.com/postedit/7690984

  

         版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-138199-1-1.html 上篇帖子: Solr学习总结-Facet 下篇帖子: Apache Solr单机环境配置(包括中文分词和Java API的使用)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表