「搜索」是很多產品中無法繞開的一個功能模塊,smartx 的虛擬化管理平台也提供了對主機,存儲等對象的查詢功能。近期的研發工作中,我們引入了 redisearch 來優化查詢效果。
在引入全文檢索之前,我們使用 mongoDB 內置的 正則匹配搜索文本。為了提升性能(正則搜索大部分情況下無法使用索引。)和引入語義搜索功能 (如搜索虛擬機 描述文檔的內容), 正則匹配的方式已經遠遠不夠了。我們優先考慮了 mongodb 自帶的 text 索引和 search 關鍵字,考慮到當前客戶環境的mongodb 版本較低(2.6),升級會引入額外成本。同時 text索引會給客戶環境帶來額外的內存壓力。所以我們希望能找到一種獨立的全文檢索方案。
業界常用 elasticsearch 和 lucene 方案都對 JVM 的運行時內存有著最低限額,筆者在選型測試時優先測試了 elasticearch ,其運行時大小推薦 2G 以上的內存空間,並且需要額外的磁碟空間做持久化存儲。