本文介紹PolarSearch 1.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 1.0
127860
197938
324857
454070
466709
469483
測試情境 2:shard 6,replica 0
HTTP logs Throughput(docs/s)
Client 1
Client 2
Client 4
Client 8(預設)
Client 16
Client 32
PolarSearch 1.0
172384
288195
512037
741541
783537
785893
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 1.0
77098
113670
183412
259955
271045
272685
測試情境 2:shard 6,replica 0
NYC taxis Throughput(docs/s)
Client 1
Client 2
Client 4
Client 8(預設)
Client 16
Client 32
PolarSearch 1.0
126167
187151
311023
451135
482505
488001
搜尋效能測試結果
搜尋測試在寫入完成後執行,replica=1,target_throughput=0(全速壓測模式),評估CPU滿載情況下的搜尋輸送量上限(ops/s)。
HTTP logs搜尋效能
term — 倒排索引精確尋找
在logs-*上做精確詞項匹配,命中量固定為10,000 條,返回預設10條。考察PolarSearch 1.0版本倒排索引尋找效率、跨shard扇出合并開銷以及網路協調層處理能力。
HTTP logs term(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 1.0 | 148 | 312 | 591 | 829 | 1147 | 1475 |
asc_sort_timestamp — doc values排序
對全量文檔執行match_all + 按時間戳記升序排序,返回前10條。@timestamp為date類型,按照doc values列式儲存排序。考察PolarSearch 1.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 1.0 | 133 | 262 | 443 | 579 | 732 | 931 |
range — 時間範圍掃描
對@timestamp欄位執行動態時間視窗range查詢。日誌產品90%的查詢均帶時間過濾,該task考察日期範圍掃描效率,與term形成點查與範圍查的互補對比。
HTTP logs range(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 1.0 | 106 | 269 | 431 | 573 | 707 | 815 |
hourly_agg — 時序彙總
對全量文檔執行date_histogram(按小時分桶)。考察date類型彙總吞吐,是日誌監控與統計情境的核心操作。
HTTP logs hourly_agg(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 1.0 | 1.48 | 2.97 | 4.3 | 4.76 | 4.8 | 4.8 |
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 1.0 | 281 | 564 | 1115 | 2022 | 3167 | 4508 |
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 1.0 | 10.63 | 21.07 | 39 | 43 | 43 | 43 |
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 1.0 | 17.55 | 37.64 | 64.55 | 73.38 | 74 | 75.84 |
Geonames搜尋效能
Geonames資料集基於全球地名興趣點資料,包含約1,140萬條記錄,涵蓋地名、國家代碼、人口數量及地理座標等欄位,主要考察各產品的多類型查詢能力。其中,Geonames資料集規模遠小於HTTP logs和NYC taxis,寫入耗時短,PolarSearch 1.0版本寫入效能差異不顯著,不具備對比價值。因此Geonames測試重點聚焦於搜尋情境,通過覆蓋精確查詢、全文檢索索引、彙總統計、地理空間及指令碼評分等多個維度,全面評估各產品的查詢處理能力。
term — 精確詞項匹配
Geonames term(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 1.0 | 434 | 866 | 1615 | 2887 | 4433 | 5755 |
phrase — 全文短語匹配
考察全文檢索索引中的短語匹配能力,需要在倒排索引中校正詞項位置資訊,計算複雜度高於term查詢。
Geonames phrase(ops/s) | Client 1 | Client 2 | Client 4 | Client 8 | Client 16 | Client 32 |
PolarSearch 1.0 | 408 | 782 | 1341 | 2523 | 3737 | 4925 |
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 1.0 | 12 | 24.62 | 45 | 50.55 | 51 | 51 |
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 1.0 | 5 | 9.73 | 17 | 18.62 | 19 | 19 |
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 1.0 | 5.52 | 10.85 | 19 | 20.89 | 21 | 21 |
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 1.0 | 250 | 464 | 864 | 1451 | 1960 | 2469 |