硬件概述:cpu:24,内存:20g,磁盘:10*2.7T。
写入性能:(不对ip进行添加geo信息)。
写入性能对比 | 速度 | Commit耗时(秒) 500*1000条 | Bulk耗时(秒) 1000条dns | Bulk耗时(秒) 1000条tcpflow | Bulk耗时(秒) 1000条weblog | Cpu占用 | 磁盘使用 | 数据量tcpflow | 线程配置 |
tantivy | 155272 | 6-19 | 0.01-0.06 | 0.1-0.2 | 0.1-0.2 | 40-80 us, 5-15 sy | 20-90 | 4_000_000条,870M | 10*2+10*2*3 |
lucene | 151633 | 3-4 | 0.2-0.3 | 1.3-1.4 | 1.3-1.4 | 60-80 us, 5sy | 20-90 | 4_500_000条,1.3G | 10*5 |
功能:
Query:查询功能。
Query | TermQuery | BooleanQuery | WildcardQuery | PhraseQuery | RangeQuery | FuzzyQuery | RegexpQuery | ConstantScoreQuery | PrefixQuery |
tantivy | Y | Y | Y | Y | Y | Y | Y | Y | N |
lucene | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Collector:用来在查询时获取doc的field信息,用来排序,过滤,聚合等。
Collector | TopCollector | TimeLimitingCollector | CountCollector |
tantivy | Y | N | Y |
lucene | Y | Y | N |
Docvalues/fastfield:通过docvalues获取doc的field信息,用来排序,过滤,聚合等。
| Docvalues/fastfield |
tantivy | fastfield(目前仅支持数字) |
lucene | Docvalues |
IndexWriter: 写数据。
IndexWriter | Flush(不fsync,数据可能在buffer) | Commit(fsync到磁盘) |
tantivy | N(目前未发现) | Y |
lucene | Y | Y |
总结:
功能
tantivy已实现了lucene的大多数功能。具体差异见上表。
写入性能
整体写入性能相近。
bulk索引数据时,tantivy速度快于lucene。
执行commit时,tantivy不如lucene,详见写入性能。
磁盘占用
磁盘占用相差不大,详见写入性能。