怎樣做網(wǎng)站導(dǎo)購教程足球排名最新排名世界
作者:George Kobar, Ugo Sangiorgi
?
對于任何依賴快速、準(zhǔn)確搜索數(shù)據(jù)的組織來說,強(qiáng)大、快速且高效的搜索引擎是至關(guān)重要的元素。 對于開發(fā)人員和架構(gòu)師來說,選擇正確的搜索平臺(tái)可以極大地影響你的組織提供快速且相關(guān)結(jié)果的能力。 在我們?nèi)娴男阅軠y試中,Elasticsearch 成為明智的選擇。 Elasticsearch 比 OpenSearch 快 40%-140%,同時(shí)使用更少的計(jì)算資源。
在本文中,我們將在六個(gè)主要領(lǐng)域?qū)?Elasticsearch 8.7 和 OpenSearch 2.7(測試時(shí)兩者的最新版本)進(jìn)行性能比較:文本查詢、排序、日期直方圖、范圍和術(shù)語,包括資源利用率。 我們的目標(biāo)是提供公平、實(shí)用的技術(shù)見解,幫助你做出明智的決策,無論你是優(yōu)化現(xiàn)有系統(tǒng)還是設(shè)計(jì)新系統(tǒng)。 此比較還旨在清楚地突出 Elasticsearch 和 OpenSearch 之間的性能差異,表明兩者完全不同。
我們將首先回顧性能比較的結(jié)果,然后是我們的測試方法和測試環(huán)境。
結(jié)果
使用 t-test 對性能比較結(jié)果(重點(diǎn)關(guān)注請求的 p90(第 90 個(gè)百分位數(shù)))進(jìn)行交叉驗(yàn)證,以確保兩種解決方案之間的延遲測量存在統(tǒng)計(jì)差異。 針對每種查詢類型計(jì)算相對變化(以百分比表示)。 我們還使用箱線(box plot)圖顯示 100% 請求的延遲分布,箱線圖顯示最小值、最大值、中值、平均值和異常值。 實(shí)際的方框顯示了下四分位數(shù)和上四分位數(shù),其中分別有 25% 和 75% 的觀測值落在其中。通過這種方式,我們可以了解這些值的實(shí)際分布情況。
文本查詢 — 速度提高 76%
“Show me all data that has jane@doe.com.”
?
Elasticsearch 表現(xiàn)出了顯著的領(lǐng)先優(yōu)勢,執(zhí)行文本查詢的速度比 OpenSearch 快 76%。
文本查詢是全文搜索的基礎(chǔ)和關(guān)鍵,而全文搜索是 Elasticsearch 的主要功能。 文本字段查詢允許用戶搜索文本數(shù)據(jù)中的特定短語、單個(gè)單詞甚至單詞的一部分。 用戶能夠通過文本數(shù)據(jù)執(zhí)行復(fù)雜的搜索 —— 它增強(qiáng)了整體搜索體驗(yàn)并支持廣泛的應(yīng)用程序和解決方案。
排序
"Show me the most expensive products first."
在對簡單文本查詢結(jié)果進(jìn)行排序時(shí),Elasticsearch 的性能比 OpenSearch 高出驚人的 140%。 此外,Elasticsearch 的時(shí)間戳、關(guān)鍵字和數(shù)字排序查詢的執(zhí)行時(shí)間分別加快了 24%、97% 和 53%。
排序是按特定順序(例如字母順序、數(shù)字順序或時(shí)間順序)排列數(shù)據(jù)的過程。 排序?qū)τ诨谔囟l件的搜索結(jié)果非常有用,可確保向客戶呈現(xiàn)最相關(guān)的結(jié)果。 這是增強(qiáng)用戶體驗(yàn)并提高搜索過程整體效率的重要功能。
日期直方圖
“Show me a bar chart ordered in time for all the data.”
對于日期直方圖聚合,Elasticsearch 比 OpenSearch 快 81%,展示了其強(qiáng)大能力。 處理時(shí)間的加速有利于根據(jù)時(shí)間序列數(shù)據(jù)生成有序條形圖。
日期直方圖聚合可用于通過將基于時(shí)間的數(shù)據(jù)劃分為間隔或存儲(chǔ)桶來聚合和分析數(shù)據(jù)。 此功能使用戶能夠可視化并更好地了解一段時(shí)間內(nèi)的趨勢、模式和異常情況。
范圍查詢
“Show me just the price of your products between 0-25.”
Elasticsearch 在范圍查詢方面快了 40%,在范圍聚合方面快了 68%。
在測試或關(guān)鍵字字段上搜索范圍查詢是性能和可擴(kuò)展性的另一個(gè)核心參數(shù)。 范圍查詢對于根據(jù)給定字段中的特定值范圍過濾搜索結(jié)果非常有用。 此功能允許用戶縮小搜索結(jié)果范圍并快速找到更多相關(guān)信息。
更快的構(gòu)面創(chuàng)建至關(guān)重要,因?yàn)樗婕案鶕?jù)特定屬性將數(shù)據(jù)分類為組(分面),然后在每個(gè)組內(nèi)執(zhí)行匯總操作。 此過程通過提供電子商務(wù)應(yīng)用程序中經(jīng)常使用的數(shù)據(jù)的結(jié)構(gòu)化視圖,使分析、過濾和可視化變得更加容易。
術(shù)語查詢
“Group the data by what products were bought together.”
?
Elasticsearch 展示了其優(yōu)越性,與 OpenSearch 相比,術(shù)語查詢速度快 108%,復(fù)合術(shù)語聚合速度快 103%。 這些優(yōu)勢使 Elasticsearch 成為涉及數(shù)據(jù)分組和過濾的任務(wù)的更有吸引力的選擇。
Elasticsearch 中的 “Significant Terms” 聚合會(huì)自動(dòng)排除常見或不感興趣的術(shù)語,例如停用詞(“and”、“the”、“a”)或結(jié)果中索引中頻繁出現(xiàn)的術(shù)語。 這是基于對索引數(shù)據(jù)中的術(shù)語頻率和分布的統(tǒng)計(jì)分析。
資源利用率
Elasticsearch 不僅在各種與搜索相關(guān)的任務(wù)中優(yōu)于 OpenSearch,而且還被證明具有更高的資源效率。 默認(rèn)情況下,OpenSearch 對數(shù)據(jù)流使用 best_speed 編解碼器(優(yōu)先考慮查詢速度而不是存儲(chǔ)效率),而 Elasticsearch 使用 best_compression。 使用默認(rèn)的開箱即用設(shè)置,Elasticsearch 使用的磁盤空間減少了 37%,并且當(dāng)在兩者上使用 best_compression(用于此基準(zhǔn)測試的編解碼器)時(shí),Elasticsearch 的空間效率仍然提高了 13%。
時(shí)間序列數(shù)據(jù)流 (TSDS)
我們更進(jìn)一步,將數(shù)據(jù)重新索引到時(shí)間序列數(shù)據(jù)流中,從而進(jìn)一步壓縮數(shù)據(jù) - 平均文檔大小從 218 kb 下降到 124 kb,減少了 54.8%,如下表所示。
Average Document Size | Difference from OpenSearch | |
OpenSearch Datastream | 249 kb | - |
Elasticsearch Datastream | 218 kb | 13% |
Elasticsearch TSDS | 124 kb | 54.8% |
第三方驗(yàn)證
我們的性能測試方法和結(jié)果已經(jīng)過 TechTarget 的 Enterprise Strategy Group(一家受人尊敬的第三方供應(yīng)商)的獨(dú)立驗(yàn)證。 Tech Target 企業(yè)戰(zhàn)略組 ESG 的驗(yàn)證增加了我們的調(diào)查結(jié)果的可信度和公正性,確保測試方法和后續(xù)結(jié)果保持最高的準(zhǔn)確性和完整性標(biāo)準(zhǔn)。 他們的認(rèn)可重申了我們比較的穩(wěn)健性和可靠性,使你能夠根據(jù)我們的基準(zhǔn)測試結(jié)果做出明智的決定。
測試方法
我們?nèi)绾蔚贸鲞@些結(jié)果
本著公平、精確比較 Elasticsearch 和 OpenSearch 的精神,我們創(chuàng)建了兩個(gè)等效的 5 節(jié)點(diǎn)集群,每個(gè)集群配備 32GB 內(nèi)存、8 個(gè) CPU 核心、每個(gè)節(jié)點(diǎn) 300GB 磁盤。 對于每個(gè)產(chǎn)品,我們提取隨機(jī)生成的相同 1TB 日志文件,其中包含 22 個(gè)字段(更多詳細(xì)信息如下)。
測試是在單獨(dú)的 Kubernetes 節(jié)點(diǎn)池中完成的,確保每個(gè)產(chǎn)品都有專用資源。 我們遵循 Elasticsearch 和 OpenSearch 的最佳實(shí)踐,包括在發(fā)起查詢之前強(qiáng)制合并索引以及防止緩存請求影響的策略,從而確保測試結(jié)果的完整性。
為了保證 Elasticsearch 和 OpenSearch 比較的透明度,我們將完整的基準(zhǔn)測試流程作為開源項(xiàng)目提供。 可在此處訪問的存儲(chǔ)庫包括用于配置 Kubernetes 集群的 Terraform 配置以及用于創(chuàng)建 Elasticsearch 和 OpenSearch 集群的 Kubernetes 清單。 此外,存儲(chǔ)庫中還提供了基準(zhǔn)測試中使用的查詢。
你不僅可以測試自己,還可以使用此存儲(chǔ)庫進(jìn)行自己的研究并提高 Elasticsearch 項(xiàng)目的性能。
我們測試了什么
我們在 Elasticsearch 和 OpenSearch 之間進(jìn)行的測試是在關(guān)鍵使用領(lǐng)域進(jìn)行的,包括:
- 搜索 - 具有典型搜索欄的電子商務(wù)用例
- 可觀察性 —— 大量系統(tǒng)遙測數(shù)據(jù),例如日志、指標(biāo)和應(yīng)用程序跟蹤
- 安全——安全事件實(shí)時(shí)分析
即將進(jìn)行的比較將深入分析每個(gè)平臺(tái)在這些領(lǐng)域的表現(xiàn),包括文本查詢、排序、數(shù)據(jù)直方圖、范圍和術(shù)語。
數(shù)據(jù)集和攝取
使用此開源工具生成了 1TB 數(shù)據(jù)集,然后將其上傳到 GCP 存儲(chǔ)桶。 Logstash? 用于將 GCP 存儲(chǔ)桶中的數(shù)據(jù)集提取到 Elasticsearch 和 OpenSearch 中。 存儲(chǔ)庫中還包含生成類似數(shù)據(jù)集的說明,以防你想要復(fù)制基準(zhǔn)測試。
各字段組成的所有日志如下表所示。 除 @timestamp 之外,所有事件的值都是隨機(jī)的,@timestamp 是每個(gè)事件連續(xù)且唯一的。
Field | Value |
@timestamp | Jan 3, 2023 @ 18:59:58.000 |
agent.id | baac7358-a449-4c36-bf0f-befb211f1d38 |
agent.name | fernswisher |
agent.type | filebeat |
agent.version | 8.8.0 |
aws.cloudwatch.ingestion_time | 2023-05-01T20:49:30.820Z |
aws.cloudwatch.log_group | /var/log/messages |
aws.cloudwatch.log_stream | northcurtain |
cloud.region | ap-southeast-3 |
data_stream.dataset | benchmarks |
data_stream.namespace | day3 |
data_stream.type | logs |
event.dataset | generic |
event.id | gravecrane |
input.type | aws-cloudwatch |
log.file.path | /var/log/messages/northcurtain |
message | 2023-05-01T20:49:30.820Z May 01 20:49:30 ip-106... |
meta.file | 2023-01-03/1682974095-gotext.ndjson.gz |
metrics.size | 408 |
metrics.tmin | 238 |
process.name | systemd |
tags | preserve_original_event |
基準(zhǔn)測試
總共考慮了五個(gè)關(guān)鍵領(lǐng)域的 35 種查詢類型,總計(jì) 387,000 個(gè)請求。 在 100 個(gè)預(yù)熱查詢之后,每個(gè)查詢類型執(zhí)行 100 次,每個(gè)查詢重復(fù)該過程 50 次。
Rally 是 Elastic? 開發(fā)的開源工具,用于 Elasticsearch 和 Elastic Stack 的其他組件的基準(zhǔn)測試和性能測試。 它允許用戶針對 Elasticsearch 集群模擬各種類型的工作負(fù)載,例如索引和搜索,并以可重現(xiàn)的方式測量其性能。 雖然 Rally 是由 Elastic 開發(fā)的,主要是為了對 Elasticsearch 進(jìn)行基準(zhǔn)測試而設(shè)計(jì)的,但它是一個(gè)靈活的工具,可以適應(yīng)與 OpenSearch 一起使用。
Elastic 每天運(yùn)行基準(zhǔn)測試,以確保 Elasticsearch 中的任何新代碼的性能與昨天一樣或更好。 我們還使用自己的機(jī)器學(xué)習(xí)來識(shí)別性能異常或資源利用效率低下。 我們以透明和公開的方式提供性能和大小測試,以使使用我們產(chǎn)品的每個(gè)人受益。 值得注意的是,其他廠商不提供此功能,這可以幫助用戶隨著時(shí)間的推移監(jiān)控他們感興趣的變化。
結(jié)論:Elasticsearch — 明顯的勝利者
考慮到各種測試的結(jié)果,很明顯 Elasticsearch 始終優(yōu)于 OpenSearch。 無論是處理簡單查詢、對數(shù)據(jù)排序、生成直方圖、處理術(shù)語或范圍查詢,甚至是資源優(yōu)化,Elasticsearch 都處于領(lǐng)先地位。
在選擇搜索引擎平臺(tái)時(shí),企業(yè)應(yīng)優(yōu)先考慮速度、效率和低資源利用率 —— 這些都是 Elasticsearch 所擅長的屬性。 這使得它成為依賴快速準(zhǔn)確搜索結(jié)果的組織的一個(gè)令人信服的選擇。 無論你是對搜索結(jié)果進(jìn)行排序的電子商務(wù)平臺(tái)、識(shí)別威脅的安全分析師,還是僅僅需要有效觀察關(guān)鍵應(yīng)用程序,Elasticsearch 都在此次比較中成為明顯的領(lǐng)導(dǎo)者。
準(zhǔn)備好親自測試 Elasticsearch 了嗎?
開始免費(fèi)試用 Elastic Cloud 14 天,了解 Elasticsearch 性能如何幫助你完成項(xiàng)目。
本文中描述的任何特性或功能的發(fā)布和時(shí)間安排均由 Elastic 自行決定。 當(dāng)前不可用的任何特性或功能可能無法按時(shí)交付或根本無法交付。