DynamoDB vs Elasticsearch

DynamoDB 是 Elasticsearch 的替代方案嗎?

其實不是——兩者解決的是不同的問題,通常會搭配使用。DynamoDB 是無伺服器的 NoSQL 營運資料庫(一個鍵值與文件儲存),為大規模的低延遲讀寫而打造。Elasticsearch 是分散式的搜尋與分析引擎,為全文搜尋、彙總與相關性排名而打造。常見的做法是讓 DynamoDB 作為記錄系統,並把變更串流到 Elasticsearch(或 OpenSearch)以供搜尋。

特性DynamoDBElasticsearch
主要用途營運型(OLTP)鍵值 / 文件儲存針對你的資料做搜尋與分析的引擎
資料模型帶屬性的鍵值與文件項目為搜尋而建立索引的 JSON 文件
查詢類型鍵與 secondary index 查詢、Query/Scan、PartiQL全文查詢、filter、彙總、向量搜尋
一致性最終一致或強一致讀取;ACID 交易對新寫入近乎即時(以 refresh 為基礎)的可見性
耐久性 / 定位無伺服器的記錄系統,橫跨三個可用區複寫分散式搜尋層,通常由某個真實來源餵入
Secondary indexglobal 與 local secondary index反向索引(為搜尋而建立索引的欄位)
擴充 / 維運全受管、無伺服器;可擴充到任何規模,無伺服器需管理由 shard 與 replica 組成的分散式叢集;受管或自架
定價模式依讀 / 寫請求加上儲存付費(隨需或佈建)叢集 / 節點容量或受管服務定價

何時使用 DynamoDB

當你的工作負載屬於營運型時,就選擇 DynamoDB:針對已知存取模式的大量讀寫,你需要可預測的個位數毫秒延遲、耐久的記錄系統,且無伺服器需管理。AWS 將它描述為「無伺服器、全受管、分散式的 NoSQL 資料庫」,同時支援鍵值與文件資料模型,並在你需要時提供強讀取一致性與 ACID 交易。它適合用於使用者設定檔、session、購物車、排行榜、事件帳本與 metadata——任何你以鍵或妥善規劃的索引來取用的資料。

DynamoDB 並不提供關聯式 JOIN 或全文查詢引擎,且它的 Scan 會讀取整張表,因此臨時性的「找出任何含有這段字句的文件」這類查詢並非它的強項。請參閱 Query vs Scan,了解為何存取模式設計如此重要。

何時使用 Elasticsearch

當工作是搜尋或分析時,就選擇 Elasticsearch:帶相關性排名的全文查詢、模糊比對、自動完成、分面篩選、log 與可觀測性分析,或跨大量文件的彙總。Elastic 將 Elasticsearch 描述為「一個資料儲存與向量資料庫,為各種資料類型提供近乎即時的搜尋與分析」。它會在你的欄位上建立反向索引,因此不必掃描全部資料就能快速找到符合的文件,並提供彙總以進行分析彙整。

Elasticsearch 通常以叢集形式運作(自架、於 Elastic Cloud 上,或作為 Amazon OpenSearch Service 上的 OpenSearch 分支),而且通常會從某個記錄系統保持同步,而非作為關鍵交易資料的唯一耐久儲存。

搭配使用

兩者相輔相成,而 AWS 提供了第一方途徑來結合它們。DynamoDB Streams 會近乎即時地捕捉每一次項目層級的變更,而 zero-ETL / OpenSearch Ingestion pipeline 會把該變更串流複製到一個與 Elasticsearch 相容的搜尋索引。DynamoDB 仍是真實來源,服務你以鍵為基礎的營運流量;搜尋索引則回應全文、模糊與向量查詢。AWS 指出此整合「不會使用你資料表的讀取或寫入輸送量」,因此搜尋不會與正式流量競爭。

使用 DynamoDB

一旦選定了 DynamoDB,DynoTable 就是直接操作你資料表的桌面用戶端:瀏覽與編輯項目、建立鍵與 filter 條件,並在無需於主控台手寫 JSON 的情況下執行查詢。當你確實需要手寫運算式時——例如 KeyConditionExpressionFilterExpressionUpdateExpression——免費的 DynamoDB Expression Builder 會產生正確的語法,附上必要的 expression-attribute 名稱與值 placeholder,並針對 AWS SDK、CLI 與 PartiQL 輸出。

DynoTable 是一款閉源的商業應用程式;它透過你標準的 AWS 憑證與 DynamoDB 溝通,不會把你的資料經由任何第三方服務中轉。

FAQ

DynamoDB 能做全文搜尋嗎?

原生不行。DynamoDB 以 primary key 或 secondary index 取出項目,並可對結果做 filter,但它沒有反向索引或相關性排名,且 Scan 會讀取整張表。若要做全文搜尋,AWS 建議的途徑是把 DynamoDB 的變更串流到像 Elasticsearch 或 Amazon OpenSearch Service 這類搜尋引擎,並在那裡查詢。

我該用 DynamoDB 取代 Elasticsearch 嗎?

通常不該——它們是為不同的工作而打造。DynamoDB 是以鍵為基礎做讀寫的營運資料庫;Elasticsearch 是搜尋與分析引擎。如果你對 Elasticsearch 的唯一用途只是單純的鍵查詢,DynamoDB 或許能涵蓋;但如果你倚賴全文搜尋、彙總或相關性排名,就保留 Elasticsearch 並由 DynamoDB 餵入,而不是取代它。

Elasticsearch 是資料庫嗎?

Elastic 將 Elasticsearch 描述為一個資料儲存與向量資料庫,提供近乎即時的搜尋與分析。實務上,多數架構把它當成搜尋與分析層,從某個主要記錄系統(例如 DynamoDB)保持同步,而不是作為關鍵交易資料的唯一耐久儲存。

相關內容

最後驗證於 2026-07-12,比對 AWS DynamoDB Developer Guide 與 Elastic 的官方文件。Elasticsearch 是 Elasticsearch B.V. 的商標;此處引用僅供識別之用。

不必透過主控台就能操作 DynamoDB

DynoTable 是一款快速的 DynamoDB 桌面用戶端 — 瀏覽表格、執行 SQL 風格的查詢,並在本機編輯項目。