1:软提交(到内存中)
1.1:java实现软提交。
1.2:solr web 界面可以显示
1.3:到你的${SOLR_HOME}/example/solr/collection1/tlog可以看到日志文件的生成
没有发生变化,不管你调不调用commit方法,不管是软提交还是硬提交都是记录一个log文件。
防止宕机等等问题,在重启的时候会加载log日志文件。
1.4:到${SOLR_HOME}/example/solr/collection1/data ----没有改变 没有flash到硬盘中
过了15秒之后发现
原因:默认的提交,一段时间之后就会将内存中的数据flush到硬盘中。
配置文件在${SOLR_HOME}/example/solr/collection1/conf/schema.xml
2:硬提交到(flush到硬盘中)
2.1:java先实现硬提交。
2.2:solr web 界面可以显示
2.3:到你的${SOLR_HOME}/example/solr/collection1/tlog可以看到日志文件的生成
${SOLR_HOME}/example/solr/collection1/data可以看到数据的生成
我们可以进行优化对这些小的文件合成一个大的文件,主要是提高查询索引的效率。
3:java API操作solr的插入数据不执行commit()方法,就是就不软提交,又不硬提交的方式执行
在solr web 界面和${SOLR_HOME}/example/solr/collection1/data不会有变化
但是${SOLR_HOME}/example/solr/collection1/tlog可以看到日志文件的生成,不管提不提交tlog(日志文件)
都会记录下来的。
4:在${SOLR_HOME}/example/solr/collection1/conf/schema.xm配置文件中配置软提交和硬提交
<!-硬提交->
10000//将内存中有10000个文档之后就会执行硬提交
15000//15秒之后将内存中的数据flush到硬盘中
false //true相当于索引库中的数据重新加载一次
//false是即是提交数据也是查询不到 一般都是false
<!-软提交->
1000//每秒执行一次软提交
maxDocs:当内存索引数量达到指定值的时候,将内存的索引DUMP到硬盘中,并通知searcher类加载新的索引。maxDocs配置是针对每个独立Core的。
maxTime:每隔指定的时间段,自动将COMMIT内存中的索引数据,并通知Searcher类加载新的索引。
以上两种方式,以最先达到条件执行为准。
maxDocs和maxTime两个哪个先满足哪个先执行两者不冲突。
最后openSearcher配置表示进行autocommit时候是否重新打开searcher,如果autocommit频繁又将openSearcher设置为true,那么solr的性能压力会非常大。
1.Solr的软提交是Write-ahead Logging( 预写日志系统)(WAL),所以不必担心softCommit的数据会丢失。Log数据就在$solrHome/collection/data/tlog/下。
2.solr关闭时会进行一次硬提交,所以不必担心关闭时(或kill process)软提交数据会丢失。
kill -9时不会执行硬提交,但是数据也不会丢失,因为这些数据都会记录在tlog目录下面的日志里面,当solr重启之后就会加载日志中的数据。
除非把日志文件删掉,数据才会丢失。
通常设置是1-10分钟自动触发硬提交,每秒钟自动触发软提交
注意:
1.Solr的softCommit是Write-ahead Logging的,所以不必担心softCommit的数据会丢失。Log数据就在$solrHome/collection/data/tlog/下。
2.solr关闭时会进行一次hard commit,所以不必担心关闭时(或kill process)softCommit数据会丢失。
kill -9时数据也不会丢失,因为这些数据都会记录在tlog目录下面的日志里面,当solr重启之后就会加载日志中的数据。
除非把日志文件删掉,数据才会丢失。