solr之commit和softcommit

来源:互联网 发布:sql delete多个表 编辑:程序博客网 时间:2024/05/18 13:27

在solrconfig.xml里有两个配置项,autoCommit和autoSoftCommit,他们是干什么的呢?他们是solr提交文档的两种方式。

1. commit

一般提交又或者叫硬提交(hard commit), 使用这种提交会把文档立即持久化到磁盘,并可以让你能立马查询到它,因为它会开启一个新的searcher,但是它缺点很明显,就是很耗性能,并会阻塞到提交任务完成,使用它是非常昂贵的操作。 
在提交的文档的url里使用commit=true即可使用。

2. softcommit

软提交,这种提交不会立即把数据写到磁盘,但它可以使你能立即查询到它,就是所谓的支持near real-time (NRT) searching近实时查询,而且这样的操作不昂贵。

通过对这两种提交方式的了解,我们知道了软硬提交,除了在客户端显示设置这两种提交,我们可以在solrconfig.xml里配置这两种提交方式自动完成。

 <autoCommit>        <maxTime>${solr.autoCommit.maxTime:30000}</maxTime>        <openSearcher>false</openSearcher>  </autoCommit><autoSoftCommit>   <maxTime>${solr.autoSoftCommit.maxTime:5000}</maxTime> </autoSoftCommit>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在autoCommit里设置了文档每隔30000ms就去做一次硬提交,openSearcher属性设置是否每一次硬提交都开启一个新的Searcher,由于开启Searcher也是昂贵的操作,推荐不要开启,可以通过配合下面的autoSoftCommit来实现快速检索到提交的问题。

autoSoftCommit里设置了5000ms做一个软提交。

这样我们在客户端就可以不维护提交的方式和时间了,solr会自动来做这些事情。

solr hard commit做的事情

1、生成一个新的tlog文件,删除旧的tlog。

2、把内存中的索引文件fsync到磁盘,并创建一个index descriptor。这里比较耗费机器资源。

这样即使jvm崩溃或者宕机,也不影响这部分索引。

3、使得索引在searcher中可见。但是也需要重新打开searcher才行。

soft commit做的事情

1、把内存文件fsync到磁盘,但不创建index descriptor。

也就是说原索引和现在的索引还互不感知,所以如果jvm崩溃,那这部分索引就没了。

2、可以重新打开searcher,使得新的索引可以被查找到。

3.soft commit后jvm宕掉, 索引内容不会丢失,这部分内容保存在tlog文件夹下的日志文件里

SoftCommit Tips:

1.Solr的softCommit是Write-ahead Logging的,所以不必担心softCommit的数据会丢失。Log数据就在$solrHome/collection/data/tlog/下。

2.solr关闭时会进行一次hard commit,所以不必担心关闭(或Kill process)时softCommit数据会丢失。当然kill -9除外~


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子胃着凉呕吐怎么办 一岁受凉呕吐怎么办 孩子着凉了呕吐怎么办 小孩受凉呕吐腹泻怎么办 宝宝胃受寒呕吐怎么办 一岁半宝宝受寒呕吐怎么办 治小儿反复发烧怎么办 海洋宝宝吃下去怎么办 两岁儿童拉肚子怎么办 14天宝宝拉肚子怎么办 小孩不消化引起发烧怎么办 宝宝胃胀呕吐怎么办 小儿胃胀不消化怎么办 4岁小儿腹胀怎么办 两岁半的宝宝吐怎么办 月子宝宝闹人怎么办 宝宝一周岁拉肚子怎么办 一岁幼儿呕吐怎么办 孩子受凉呕吐拉肚子怎么办 5岁儿童呕吐怎么办 小孩发烧老是吐怎么办 宝宝吃雪糕呕吐怎么办 小孩感冒发烧吐怎么办 宝宝呕吐加发热怎么办 七个月宝拉肚子怎么办 新生儿17天拉稀怎么办 七个半月宝宝拉肚子怎么办 七个月婴儿拉稀怎么办 宝宝不停的拉稀怎么办 猫咪受凉了呕吐怎么办 孩子生理性腹泻怎么办 婴儿肚子受凉了怎么办 小孩说话有点口吃怎么办 3岁宝宝先拉后吐怎么办 1岁宝宝拉肚子怎么办 2岁宝宝结巴怎么办 小孩吐和拉肚子怎么办 头外伤后头晕怎么办 紧张性神经头痛怎么办 小孩吃饱受凉吐怎么办 宝宝吃饱受凉吐怎么办