sphinx的特色之一是建立索引速度快,最近轉投Elasticsearch后,一直想做個對比,網上資料常見說法是10倍的差距。
測試環境
- 硬件:單核,2G內存的E5-2630 虛擬機
- 操作系統:Centos 6.5
版本
- sphinx 版本:coreseek 4.1(基于sphinx 2.02)
- Elasticsearch 版本:2.3.1
- mysql 版本:5.6
分詞器(均使用默認的分詞詞庫)
- mmseg:coreseek自帶
- ik:Elasticsearch 插件
索引數據源
- 數據庫:mysql
- 數據量:46萬+篇文章,約為1.6G數據
- 建立索引的字段:id,title,content
- Elasticsearch 使用插件:Elasticsearch-jdbc 2.3.1
Elasticsearch 集群設置
為了盡可能接近單機測試,Elasticsearch 僅開啟一個服務節點(本地),且索引不做分片,不做副本。
測試情況
sphinx
- 每秒處理數據量:2.77 MB
-
每秒處理文檔數:1277 篇
截圖-sphinx
Elasticsearch
- 每秒處理數據量:0.794 MB
- 每秒處理文檔數:397 篇
截圖-Elasticsearch(kibana 監控)
測試結論
- sphinx 索引速度確實相對比較快,可能是環境的差異,未達到官方所說的10M/s 的索引速度;
- 同等環境下,Elasticsearch索引速度約為sphinx的1/4,但實際生產環境下,Elasticsearch應該會有較大提升(多核、高內存硬件),而不會僅僅約400+篇/s的索引速度。