DynamoDB vs Elasticsearch

DynamoDB 是 Elasticsearch 的替代品吗?

并不算——它们解决不同的问题,而且通常一起使用。DynamoDB 是无服务器 NoSQL 操作型数据库(键值与文档存储),为大规模低延迟读写而生。Elasticsearch 是分布式搜索与分析引擎,为全文搜索、聚合和相关性排序而生。一种常见模式是让 DynamoDB 作为记录系统,并把变更流式传输到 Elasticsearch(或 OpenSearch)用于搜索。

特性DynamoDBElasticsearch
主要用途操作型(OLTP)键值 / 文档存储面向你数据的搜索与分析引擎
数据模型带属性的键值与文档项目为搜索而索引的 JSON 文档
查询类型键和二级索引查找、Query/Scan、PartiQL全文查询、过滤、聚合、向量搜索
一致性最终一致或强一致读取;ACID 事务对新写入的近实时(基于刷新)可见性
持久性 / 角色无服务器记录系统,跨三个可用区复制分布式搜索层,通常由真相来源供给
二级索引全局与本地二级索引倒排索引(为搜索而索引的字段)
扩展 / 运维全托管、无服务器;可扩展到任意规模,无服务器需运维分片与副本的分布式集群;托管或自托管
定价模型按读/写请求加存储付费(按需或预置)集群/节点容量或托管服务定价

何时使用 DynamoDB

当你的工作负载是操作型的时候选 DynamoDB:针对已知访问模式的大量读写,需要可预测的个位数毫秒延迟、持久的记录系统,且无服务器需运维。AWS 将它描述为"一款无服务器、全托管、分布式的 NoSQL 数据库",同时支持键值和文档数据模型,并在你需要时提供强读一致性和 ACID 事务。它适合用户资料、会话、购物车、排行榜、事件账本和元数据——任何你按键或精心规划的索引获取的东西。

DynamoDB 提供关系型 JOIN 或全文查询引擎,且它的 Scan 会读取整张表,因此临时的"找出任何包含这个短语的文档"查询不是它的强项。参见 Query vs Scan,了解为什么访问模式设计很重要。

何时使用 Elasticsearch

当任务是搜索或分析时选 Elasticsearch:带相关性排序的全文查询、模糊匹配、自动补全、分面过滤、日志与可观测性分析,或跨大量文档的聚合。Elastic 将 Elasticsearch 描述为"一个数据存储和向量数据库,为各类数据提供近实时的搜索与分析"。它在你的字段上构建倒排索引,因而无需扫描全部即可快速找到匹配文档,并暴露聚合能力用于分析式汇总。

Elasticsearch 通常以集群运营(自托管、在 Elastic Cloud 上,或作为 Amazon OpenSearch Service 上的 OpenSearch 分支),并且通常与记录系统保持同步,而不是作为关键事务数据唯一的持久存储。

一起使用它们

两者是互补的,且 AWS 提供了将它们结合的第一方路径。DynamoDB Streams 近实时捕获每一次项目级变更,一条 zero-ETL / OpenSearch Ingestion 管道把该变更流复制到一个 Elasticsearch 兼容的搜索索引中。DynamoDB 仍作为真相来源,服务你基于键的操作流量;搜索索引回答全文、模糊和向量查询。AWS 指出该集成"不消耗你表上的读写吞吐量",因此搜索不会与生产流量竞争。

使用 DynamoDB

一旦你选定 DynamoDB,DynoTable 是一款桌面客户端,可直接操作你的表:浏览和编辑项目、构建键和过滤条件,并运行查询,无需在控制台里手写 JSON。当你确实需要手写一个表达式——一个 KeyConditionExpressionFilterExpressionUpdateExpression——免费的 DynamoDB Expression Builder 会生成带有必需的表达式属性名和值占位符的正确语法,并为 AWS SDK、CLI 和 PartiQL 输出它。

DynoTable 是一款闭源商业应用;它通过你标准的 AWS 凭证与 DynamoDB 通信,不会把你的数据经过任何第三方服务。

常见问题

DynamoDB 能做全文搜索吗?

不能原生支持。DynamoDB 按主键或二级索引检索项目并可过滤结果,但它没有倒排索引或相关性排序,且 Scan 会读取整张表。对于全文搜索,AWS 推荐的路径是把 DynamoDB 变更流式传输到诸如 Elasticsearch 或 Amazon OpenSearch Service 的搜索引擎,并在那里查询。

我应该用 DynamoDB 替换 Elasticsearch 吗?

通常不该——它们为不同的工作而生。DynamoDB 是面向基于键读写的操作型数据库;Elasticsearch 是搜索与分析引擎。如果你对 Elasticsearch 的唯一用途只是简单的键查找,DynamoDB 或许能覆盖;但如果你依赖全文搜索、聚合或相关性排序,就保留 Elasticsearch 并从 DynamoDB 供给它,而不是替换它。

Elasticsearch 是数据库吗?

Elastic 将 Elasticsearch 描述为一个提供近实时搜索与分析的数据存储和向量数据库。实践中,多数架构把它当作一个从主记录系统(如 DynamoDB)保持同步的搜索与分析层,而不是关键事务数据唯一的持久存储。

相关内容

Last verified 2026-07-12 against the AWS DynamoDB Developer Guide and Elastic's official documentation. Elasticsearch 是 Elasticsearch B.V. 的商标;此处引用仅用于标识。

无需控制台即可使用 DynamoDB

DynoTable 是面向 DynamoDB 的快速桌面客户端 —— 浏览表、运行 SQL 风格的查询,并在本地编辑项。