本文介紹PolarSearch 3.0版本在HTTP logs、NYC taxis與Geonames三個標準負載下的OpenSearch Benchmark效能測試結果。
具體測試步驟請參見PolarSearch基準效能測試方法。
寫入效能測試結果
寫入測試使用append-no-conflicts-index-only test procedure,將完整語料批量寫入叢集,評估在不同並發寫入用戶端數(bulk_indexing_clients)下的寫入輸送量(docs/s)。每輪測試均從空索引開始。
HTTP logs 寫入效能
資料集基於1998年世界盃期間真實Web伺服器訪問日誌,包含約2.47億條日誌記錄。
測試情境1:shard 6,replica 1
HTTP logs Throughput(docs/s)
Client 1
Client 2
Client 4
Client 8(預設)
Client 16
Client 32
PolarSearch 3.0
129830
216656
345442
528321
552017
551569
測試情境2:shard 6,replica 0
HTTP logs Throughput(docs/s)
Client 1
Client 2
Client 4
Client 8(預設)
Client 16
Client 32
PolarSearch 3.0
189685
326329
577366
880890
957399
951244
NYC taxis 寫入效能
資料集基於2015年紐約出租車行程資料,包含約1.65億條記錄。
測試情境1:shard 6,replica 1
NYC taxis Throughput(docs/s)
Client 1
Client 2
Client 4
Client 8(預設)
Client 16
Client 32
PolarSearch 3.0
92773
134968
222221
321173
335255
336760
測試情境2:shard 6,replica 0
NYC taxis Throughput(docs/s)
Client 1
Client 2
Client 4
Client 8(預設)
Client 16
Client 32
PolarSearch 3.0
139770
222312
370978
555390
601674
598330
搜尋效能測試結果
搜尋測試在寫入完成後執行,replica=1,target_throughput=0(全速壓測模式),評估CPU滿載情況下的搜尋輸送量上限(ops/s)。
HTTP logs搜尋效能
term - 倒排索引精確尋找
在logs-*上做精確詞項匹配,命中量固定為10,000 條,返回預設10條。考察PolarSearch 3.0版本倒排索引尋找效率、跨shard扇出合并開銷以及網路協調層處理能力。
HTTP logs term(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 3.0 | 256 | 519 | 868 | 1361 | 1914 | 2592 |
asc_sort_timestamp - doc values排序
對全量文檔執行match_all + 按時間戳記升序排序,返回前10條。@timestamp為date類型,按照doc values列式儲存排序。考察PolarSearch 3.0版本doc values讀取效率、top-N堆排序及協調節點合并能力。
HTTP logs asc_sort_timestamp(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 3.0 | 193 | 432 | 779 | 1020 | 1514 | 2073 |
range - 時間範圍掃描
對@timestamp欄位執行動態時間視窗range查詢。日誌產品90%的查詢均帶時間過濾,該task考察日期範圍掃描效率,與term形成點查與範圍查的互補對比。
HTTP logs range(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 3.0 | 219 | 494 | 893 | 1338 | 2005 | 2646 |
hourly_agg - 時序彙總
對全量文檔執行date_histogram(按小時分桶)。考察date類型彙總吞吐,是日誌監控與統計情境的核心操作。
HTTP logs hourly_agg(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 3.0 | 48 | 145 | 251 | 315 | 339 | 346 |
NYC taxis 搜尋效能
match-all - 基礎調度基準
對全量約1.65億條記錄執行match_all,僅返回預設10條,無排序、無彙總。考察引擎請求解析、shard調度及結果序列化的基礎路徑效率。
NYC taxis match-all(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 3.0 | 271 | 612 | 1292 | 2326 | 3668 | 5531 |
range - 數值範圍掃描
對total_amount(車費金額,scaled_float類型)執行固定數值範圍過濾,查詢車費在5~15美元之間的行程,返回預設10條。考察數值欄位範圍掃描效率。
NYC taxis range(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 3.0 | 161 | 441 | 906 | 1335 | 1723 | 1958 |
autohisto_agg - 自適應時間彙總
對20天時間視窗內的資料執行auto_date_histogram(自動分桶,buckets=20),考察引擎自適應彙總能力。與range形成互補(range是數值範圍查詢,auto_date_histogram是時間範圍彙總)。
NYC taxis autohisto_agg(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 3.0 | 170 | 444 | 733 | 966 | 1117 | 1142 |
Geonames 搜尋效能
Geonames資料集基於全球地名興趣點資料,包含約1,140萬條記錄,涵蓋地名、國家代碼、人口數量及地理座標等欄位,主要考察各產品的多類型查詢能力。其中,Geonames資料集規模遠小於HTTP logs和NYC taxis,寫入耗時短,PolarSearch 3.0版本寫入效能差異不顯著,不具備對比價值。因此Geonames測試重點聚焦於搜尋情境,通過覆蓋精確查詢、全文檢索索引、彙總統計、地理空間及指令碼評分等多個維度,全面評估各產品的查詢處理能力。
term - 精確詞項匹配
Geonames term(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 3.0 | 594 | 1118 | 2004 | 3871 | 5851 | 8186 |
phrase - 全文短語匹配
考察全文檢索索引中的短語匹配能力,需要在倒排索引中校正詞項位置資訊,計算複雜度高於term查詢。
Geonames phrase(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 3.0 | 481 | 1153 | 1686 | 3014 | 4719 | 6803 |
country_agg_uncached - terms彙總 + 嵌套子彙總
對全量文檔執行terms彙總(按國家代碼分桶)+ 嵌套sum子彙總,彙總緩衝禁用以反映真實計算開銷。該任務是計算密集型彙總情境的代表,考察引擎在重彙總情境下的CPU利用效率。
Geonames country_agg_uncached(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 3.0 | 17 | 32.56 | 40.95 | 43.56 | 45 | 45 |
decay_geo_gauss_function_score - 地理距離衰減評分
基於geo_point欄位執行地理距離衰減函數評分查詢(Gaussian 衰減),綜合考察地理空間索引查詢效率與評分計算能力。
Geonames decay_geo_gauss(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 3.0 | 5.78 | 11.32 | 19 | 21 | 21.38 | 21.34 |
painless_static - Painless指令碼自訂評分
使用Painless指令碼對每條文檔執行自訂評分計算,指令碼先行編譯後以靜態方式執行(static binding)。該任務考察引擎指令碼執行引擎(JIT 編譯)的計算吞吐,是高自訂評分情境的典型代表。
Geonames painless_static(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 3.0 | 12 | 14 | 21 | 23.51 | 23.71 | 23.74 |
desc_sort_population - doc values數值排序
對全量文檔按population(整數類型)降序排序,返回前10條。按照doc values列式儲存完成排序。考察數值欄位列式讀取效率及top-N排序效能。
Geonames desc_sort_population(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 3.0 | 316 | 463 | 1047 | 1894 | 2577 | 3593 |