solr中commit和opimize理解
来源:互联网 发布:java map value 多值 编辑:程序博客网 时间:2024/06/05 10:11
在solr中通常包含以下一些操作,包括显式的和隐式的操作
1、addDocument,对文档进行分析,分词处理,创建索引段segment,每当flush缓冲区中增加的文档,索引文件都会新建一个段segment。
添加Document时,没有commit或者optimize操作时,文档无法被索引到!
commit或optimize操作会更新索引,另optimize是包含commit操作,索引文件越大,commit和optimize就越耗时
2、commit,除了向Directory对象提交索引变化,搜索器query的重新建立
commit提交后,索引flush到硬盘上,并触发listener,创造新的insexSearcher(新的insexReader,从硬盘中加载索引),这样后续的查询就用新的insexsearcher了。
在solr4.0之后,有两种commit,一种是hard commit,一种是softcommit;
hardcommit的时候,要flush document到存储上,并且会warm 新的searcher;而softcommit是在NRT实时搜索中提出的,不会flush到持久化存储,也可以使得document被搜索到,代价比hardcommit要小的多;对实时性要求比较高的场景下,可以做softcommit操作,不过还是要定时hardcommit,确保 索引持久化到存储。
3、rollback,回滚对文档的索引的变动
4、flush,当内存中文档的索引的大小大于一定的阀值时,会flush到硬盘上
满足下面两个条件,缓存自动flush到storage上;但是此时并不能搜索到已add但未提交的索引。
<ramBufferSizeMB>100</ramBufferSizeMB>
<maxBufferedDocs>1000</maxBufferedDocs>
Solr4.0以后启用了事务日志updatelog的概念,可以保证不丢失数据;在宕机后,完全可以根据updatelog来进行恢复,自动建立索引,及时索引未来得急flush到磁盘上。
5、close,lucene中对IndexWrite的close操作,隐含进行flush操作,后做commit操作
6、optimize(merge),
有点像硬盘上整理磁盘碎片的操作。为了提高搜索速度,它会将索引重组在一起,然后移除需要被删除或是更新的文档,请注意,solr是没有update的这种操作的,只有增加与删除。solr在优化时,将需要删除或是被替换的索引标记为deleted,然后再创建新的文档替换掉需要被替换的。optimize就是执行此操作。所以在优化的时候,你的索引会增大,然后再减小。optimize操作会创建一个全新的的索引结构,所以,你需要预备出2倍于你commit时索引大小的空间。
1、addDocument,对文档进行分析,分词处理,创建索引段segment,每当flush缓冲区中增加的文档,索引文件都会新建一个段segment。
添加Document时,没有commit或者optimize操作时,文档无法被索引到!
commit或optimize操作会更新索引,另optimize是包含commit操作,索引文件越大,commit和optimize就越耗时
2、commit,除了向Directory对象提交索引变化,搜索器query的重新建立
commit提交后,索引flush到硬盘上,并触发listener,创造新的insexSearcher(新的insexReader,从硬盘中加载索引),这样后续的查询就用新的insexsearcher了。
在solr4.0之后,有两种commit,一种是hard commit,一种是softcommit;
hardcommit的时候,要flush document到存储上,并且会warm 新的searcher;而softcommit是在NRT实时搜索中提出的,不会flush到持久化存储,也可以使得document被搜索到,代价比hardcommit要小的多;对实时性要求比较高的场景下,可以做softcommit操作,不过还是要定时hardcommit,确保 索引持久化到存储。
3、rollback,回滚对文档的索引的变动
4、flush,当内存中文档的索引的大小大于一定的阀值时,会flush到硬盘上
满足下面两个条件,缓存自动flush到storage上;但是此时并不能搜索到已add但未提交的索引。
<ramBufferSizeMB>100</ramBufferSizeMB>
<maxBufferedDocs>1000</maxBufferedDocs>
Solr4.0以后启用了事务日志updatelog的概念,可以保证不丢失数据;在宕机后,完全可以根据updatelog来进行恢复,自动建立索引,及时索引未来得急flush到磁盘上。
5、close,lucene中对IndexWrite的close操作,隐含进行flush操作,后做commit操作
6、optimize(merge),
有点像硬盘上整理磁盘碎片的操作。为了提高搜索速度,它会将索引重组在一起,然后移除需要被删除或是更新的文档,请注意,solr是没有update的这种操作的,只有增加与删除。solr在优化时,将需要删除或是被替换的索引标记为deleted,然后再创建新的文档替换掉需要被替换的。optimize就是执行此操作。所以在优化的时候,你的索引会增大,然后再减小。optimize操作会创建一个全新的的索引结构,所以,你需要预备出2倍于你commit时索引大小的空间。
0 0
- solr中commit和opimize理解
- solr之commit和softcommit
- solr之commit和softcommit
- Flush和Commit的理解
- solr 的commit, soft commit等
- Hibernate中 session.getTransaction().commit(); 和session.beginTransaction().commit();
- Solr通过配置自动Commit
- Solr 中的commit与optimize
- 理解和学习Solr的score机制
- Lucene和solr的一点理解
- Hibernate中commit()和flush()的区别
- oracle数据库中commit和rollback命令
- Oracle数据库中commit和rollback命令
- SharedPreferences中commit和apply的区别
- MySQL Group Commit理解
- 利用commit 理解docker
- 如何使SOLR系统自动AUTO COMMIT?
- solr中facet和group的使用
- spring四种依赖注入方式
- Ubuntu 13.10 装adt-bundle-linux-x86_64-20140702.zip DDMS 卡死
- ERROR: missing Change-Id in commit message footer
- iOS疯狂详解之 登陆后淡入淡出更换rootViewController
- (others)OSPF报文格式
- solr中commit和opimize理解
- 检查一个ttf文件是否支持一个给定unicode. python写的
- Jetty服务器简介
- Android中string.xml中的替换
- spring set up
- 噩梦系列篇之Player的动画播放控制
- 数字证书
- 空间排序
- 编译64位和编译32位程序