Luncene 6.5.1
在lucene中flush存在两种flush:主动flush与自动flush。那么在哪些情况下会触发自动flush呢?
MaxBufferedDocs
MaxBufferedDocs描述了索引信息被写入到磁盘前暂时缓存在内存中允许的文档最大数量,也就是每个DWPT缓存的最大文档数量,当一个DWPT中的文档数量超过这个值时会触发自动flush,该参数在建立IndexWriter后是可变的。
RAMBufferSizeMB
如果所有DWPT中的DocumentIndexData的索引内存占用量超过RAMBufferSizeMB,那么就会触发自动flush,将DWPT中的索引信息生成为一个段。这个参数同样是可以配置的,默认16MB。
RAMPerThreadHardLimitMB
如果每一个DWPT中的所有DocumentIndexData的索引内存占用量超过RAMPerThreadHardLimitMB,那么就会触发自动flush,将DWPT中的索引信息生成为一个段。该参数在iw建立后是不可以配置的。
总结
MaxBufferedDocs与RAMPerThreadHardLimitMB都是针对单个DWPT的flush,而RAMBufferSizeMB则是针对所有的DWPT。