什么是 AWS Elasticsearch

2025年3月17日 | 阅读11分钟

Elasticsearch 是一个开源数据库工具,易于部署和操作。它用于分析和搜索日志及一般数据。基本上,它是一个NoSQL 数据库,以文档格式存储非结构化数据。此外,如果谈到 AWS Elasticsearch,它就像亚马逊提供的服务一样,易于在云中创建。您可以将其用于多种目的,不仅是在线糟糕地检查日志或数据,还可以将其连接到 CloudWatch 并在创建 AWS Elasticsearch 后用于建模。

在创建 AWS Elasticsearch 后,可能有多种方法可以添加数据或将其连接到日志。我们可以通过 API 使用它,发送批量数据或文件。我们也可以使用任何代码自动连接它。您可以将第三方插件与 AWS Elasticsearch 一起使用,例如 Amazon S3 River 插件。AWS Elasticsearch 使其用户的工作变得更简单,因为他们无需手动创建 Elasticsearch 集群。它允许用户实时可视化、分析和搜索数据。

在本章中,我们将描述 AWS Elasticsearch 服务的以下几点 -

  • 什么是 AWS Elasticsearch
  • AWS Elasticsearch 的概念
  • AWS Elasticsearch 的优点
  • AWS Elasticsearch 的局限性
  • AWS Elasticsearch 架构
  • AWS Elasticsearch 的特性
  • 开始使用 AWS Elasticsearch 服务
  • 支持的 Elasticsearch 版本

AWS Elasticsearch 的概念

AWS Elasticsearch 有以下概念 -

  • Amazon Elasticsearch 域和 Elasticsearch 集群是相同的。域是您指定的具有实例类型、实例计数、设置和存储资源的集群。
  • 它允许我们在同一个域内创建一到多个 Elasticsearch 索引。
  • Amazon Elasticsearch 在更新域时使用蓝/绿部署流程。它指的是运行两个生产环境的做法,一个是活动的,一个是空闲的。
  • 如果您不对必需的更新采取任何措施,AWS 会在一定时间后自动更新服务软件。

AWS Elasticsearch 的优点

使用 AWS Elasticsearch 有许多优点,如下所示 -

AWS Elasticsearch

1)易于使用

在 Amazon Elasticsearch 中,所有服务都是完全托管的,这使其易于使用。我们可以节省备份、故障恢复、软件修补和监控的时间。AWS Elasticsearch 的用户可以在几秒钟内使用 AWS Elasticsearch 部署生产就绪的 Elasticsearch 集群。他们无需担心 Elasticsearch 软件的安装和维护。

2)高度安全

AWS Elasticsearch 高度安全。可以轻松地从 VPC 设置对 Amazon Elasticsearch 服务的安全访问。这是为了完美维护 VPC。AWS IAM 和 Amazon Cognito 策略有助于管理身份验证和访问控制。用户可以通过 Amazon VPC 为 Elasticsearch 服务中的数据实现网络隔离。

3)经济高效

Amazon Elasticsearch 服务最大的优点之一是您只需为您使用的资源付费。它为用户提供了选择,他们可以选择按需定价,无需预付费用。如前所述,Amazon Elasticsearch 服务是一项完全托管的服务,通过消除 Elasticsearch 专家团队来管理和监控集群,从而降低了运营成本。

4)易于扩展和可用

AWS Elasticsearch 是一个高度可扩展的工具。它允许用户在单个集群中存储多达 3 PB 的数据。此外,它还允许用户通过用户界面(如 Kibana)运行大型日志分析工作负载。集群可以通过单个 API 调用或在 AWS 控制台中单击几下轻松进行扩展和缩减。

Multi-AZ 部署允许在同一区域内的三个可用区之间复制数据。通过这种方式,Elasticsearch 被设计为高度可用。

5)与 AWS 服务紧密集成

AWS Elasticsearch 与 AWS 服务内置集成。这包括 AWS IOT、CloudWatch Logs 和 Kinesis Firehose,用于无缝数据摄取。

6)支持开源 API

AWS Elasticsearch 不需要新的软件或编程技能,并提供对开源 API 的直接访问。Logstash,一个开源数据摄取工具,受到 AWS Elasticsearch 服务的支持。除了 Logstash,它还支持 Kibana,这是一个数据可视化工具。这三个工具的组合被称为ELK Stack

AWS Elasticsearch 的局限性

除了许多优点之外,AWS Elasticsearch 还有一些局限性,如下所示 -

  • 它允许用户在 VPC 内启动其域或使用公共终端节点。尽管不允许同时执行这两个操作。
  • AWS Elasticsearch 仅提供 12 个月的免费套餐;这意味着它不是免费的。注册后 12 个月,您需要付费才能使用它。

AWS Elasticsearch 架构

通过查看 AWS Elasticsearch 的架构,您将了解 AWS Elasticsearch 将提供的多项服务。Amazon Elasticsearch 域肯定是由 AWS CloudFormation 模板部署的。这可以是硬件、软件或暴露给 Amazon Elasticsearch 服务终端节点的数据。

AWS Elasticsearch

在此 AWS Elasticsearch 架构中,您会看到弹性负载均衡,其主要目标是将流量分配给代理服务器并启用自动恢复以维持实例可用性。弹性负载均衡在此处使用高可用性设计来实现此目标。上述模板可以轻松启动三个 Amazon EC2 实例。它们分别位于 Amazon VPC 网络的不同可用区。此处,VPC 表示虚拟私有云。

AWS Elasticsearch 特性

AWS Elasticsearch 具有各种特性,每个特性都引入了一些独特的功能。AWS Elasticsearch 的列表如下 -

AWS Elasticsearch

a) 安全性

  • 它通过 AWS Identity and Access Management (IAM) 提供访问控制。
  • 数据已加密,并提供节点到节点加密。
  • AWS Elasticsearch 在不同级别提供安全性,即字段级别、文档级别和索引级别。
  • 对于 Kibana(一个数据可视化工具),它提供 HTTP 基本身份验证。

b) 灵活性

  • AWS Elasticsearch 为用户提供灵活性,例如,为了改进搜索结果,它提供了自定义包。
  • AWS Elasticsearch 提供 SQL 支持以与 BI 应用程序(商业智能应用程序)集成。

c) 可扩展性

  • AWS Elasticsearch 高度可扩展,因为它提供了多达 3 PB 的附加存储来保存数据。
  • 此外,它还支持UltraWarm 存储来存储只读数据。UltraWarm 存储是一种存储大量数据的经济高效的方式。
  • 使用 AWS Elasticsearch,我们可以配置各种 CPU、内存和存储容量。

d) 稳定性

  • 其中一个最重要的特性是,它提供自动快照功能来备份 Amazon ES 域并恢复它们。在此,备份和恢复过程是自动完成的。
  • AWS Elasticsearch 为您的资源提供了各种地理位置(称为区域和可用区)。
  • 它允许在同一 AWS 区域内的两个或三个可用区之间分配节点。
  • 为了分担集群管理任务,它提供了专用主节点。

e) 与流行服务的集成

  • AWS Elasticsearch 可以与许多其他流行服务集成,例如与 Kibana 集成以进行数据可视化。
  • 为了监控 Amazon ES 域指标和设置警报,它与 Amazon CloudWatch 集成。
  • 为了将流式数据加载到 Amazon Elasticsearch 中,它与不同的 Amazon 服务集成,这些服务是:Amazon DynamoDB、Amazon S3 和 Amazon Kinesis。
  • AWS Elasticsearch 与 AWS CloudTrail 集成,用于审计对 Amazon Elasticsearch 域的配置 API 调用。
  • 如果您的数据超出特定阈值,它会通过 Amazon SNS 向用户发出警报。

开始使用 AWS Elasticsearch 服务

Amazon Elasticsearch Service 是 AWS 提供的一项托管服务。它使得在云中设置、操作和扩展 Elasticsearch 集群变得容易。我们可以通过此 Amazon Elasticsearch 直接访问 Elasticsearch API。开始使用 AWS Elasticsearch 需要一系列步骤。这些步骤如下 -

  1. 注册 AWS 账户
  2. 创建 Amazon ES 域
  3. 将数据上传到 Amazon ES 域进行索引
  4. 在 Amazon 域中搜索文档
  5. 删除 Amazon ES 域

首先,要开始使用 AWS,我们需要在 AWS 服务上创建一个账户。

第 1 步:注册 AWS 账户

第 1 步:使用 AWS 注册创建一个新账户。单击 此处,然后单击右上角的创建 AWS 账户按钮。

AWS Elasticsearch

第 2 步:在此处提供所有必需的信息,然后单击继续按钮。

AWS Elasticsearch

第 3 步:接下来,提供联系信息,勾选同意条款和条件的复选框,然后单击创建账户并继续按钮。

AWS Elasticsearch

在这里,您可以选择账户类型,即专业型或个人型。默认情况下是专业型。

第 4 步:在此步骤中,您需要保存您的借记卡/信用卡信息,例如卡号、有效期、账单地址等,用于付款信息。

AWS Elasticsearch

第 2 步:创建 Amazon ES 域

Amazon ES 域和 Elasticsearch 集群是相同的。创建 AWS 账户后,您就可以创建 Amazon Elasticsearch 域了。在此步骤中,我们将创建一个名为books的 Amazon ES 域。以下是启动和运行 Elasticsearch 服务域的步骤。

  1. 定义您的域
  2. 配置您的集群
  3. 设置访问策略
  4. 审查

以下是创建 Amazon ES 域的详细步骤。

定义您的域

  1. 使用您的凭据登录您的 AWS 账户。
  2. 要导航到 Elasticsearch Service 页面,请转到分析部分,然后单击Elasticsearch Service
  3. 单击创建新域按钮,然后选择开发和测试
  4. 在此,您需要选择 Elasticsearch 版本和您偏好的部署类型。Elasticsearch 7.4.0 是最新版本,我们也使用此版本。

配置您的域

  1. 输入您要创建的域的名称(例如,books),然后从下拉列表中选择实例类型。
  2. 数据节点存储使用默认值,并为实例数量设置 1。
  3. 我们在实例类型中选择small.elasticsearch,这是一个免费套餐。
  4. 忽略其他字段,然后单击下一步进入设置访问页面。

设置访问策略

  1. 要访问此域,我们必须为其设置适当的权限。因此,您必须在此页面上设置访问权限。
  2. 为简单起见,我们建议您选择公共访问域。但是,您可以将访问限制为 VPC 或 IAM 角色。特定用户可以访问您的 Elasticsearch 集群。
  3. 暂时保留 Amazon Cognito 身份验证设置。
  4. 在访问策略下,选择一个模板来设置域访问策略。为此选择允许对域进行公开访问策略。
  5. 忽略加密设置,保持默认值,然后单击下一步。

审查

域创建的最后一步是进行审核。审核页面会在最终确定之前一次显示您在前面步骤中设置的所有设置。

  1. 仔细检查您的配置,然后选择确认
  2. 新域(集群)的创建和初始化大约需要 10-15 分钟。但是,根据配置,初始化可能需要更长的时间。

完成所有这些步骤后,您将收到一条消息:“您已成功创建 Elasticsearch 域”。

您的 ES 域将启动并运行。您将看到域状态设置为活动,集群健康状况为绿色

第 3 步:上传数据进行索引

现在,下一步是上传数据进行索引。使用命令行界面或编程语言,我们可以将数据上传到 Amazon ES 服务域。在此步骤中,我们将上传少量测试数据。

Windows 操作系统上,您可以安装 curl 以从命令提示符使用它。但是,我们建议您使用Cygwin之类的工具。MacOS 和 Linux 操作系统已预装 curl。因此,您无需在其上安装 curl。

通过命令行上传单个文档

在命令行上执行以下命令,将单个文档上传到 Amazon ES 域。

上传包含多个文档的 JSON 文件

1. 为此,我们将创建一个名为jsonJSON 文件。复制并粘贴以下内容

2. 现在,运行以下命令将 json 文件上传到 books 域。

第 4 步:在 Amazon ES 域中搜索文档

Elasticsearch 搜索 API 帮助用户在 Amazon Elasticsearch Service 域中搜索文档。或者,您也可以使用 Kibana(数据可视化工具)在域中搜索文档。搜索操作是 Elasticsearch 最重要的事件之一。当数据量很大时,使用特定查询字符串搜索数据是一个好主意。

使用以下示例,我们将搜索books域中的技术书籍。

通过命令行搜索文档

在命令行上执行以下命令来搜索您创建的域。

使用 Kibana 界面搜索文档

1. 在浏览器中,导航到您 Amazon ES 域的 Kibana 插件。在 Amazon ES 控制台上,您将在域仪表板上找到 Kibana 终端节点。URL 格式将是 -

2. 使用您的主用户名和密码登录控制台。

3. 在这里,至少需要配置一个索引模式才能使用 Kibana,因为 Kibana 使用这些模式来识别您想要分析的索引。由于我们创建了books域,所以在此教程中输入books,然后选择创建

4. 现在,您将看到由索引模式显示的各种文档字段,如 book_name、author、publisher 等。目前,选择发现来搜索您的数据。

5. 在搜索栏中输入 Mars,然后按 Enter 键。请注意,当您搜索短语 mars attacks 时,相似度分数(_score)如何增加。

第 5 步:删除 Amazon ES 域

在第 2 步中,我们创建了一个名为 books 的 Amazon ES 域。此域仅用于测试目的。现在,我们将在本步中将其删除。要删除 Amazon ES 域,请按照以下步骤操作。

  1. 使用用户名和密码登录 Amazon Elasticsearch Service 控制台。
  2. 在导航页面上,在我的域下选择 books 域。
  3. 现在,选择操作,然后在其中选择删除域
  4. 最后,勾选删除域复选框并选择删除。

支持的 Elasticsearch 版本

但是,并非所有版本的 Elasticsearch 都受 AWS Elasticsearch 支持。但以下版本的 Elasticsearch 受 AWS Elasticsearch 支持 -

  • 1, 7.4, 7.7
  • 0, 6.2, 6.3, 6.4, 6.5, 6.7, 6.8
  • 1, 5.3, 5.5, 5.6
  • 3
  • 5

如果我们将 Elasticsearch 7.x 和 6.x 版本与早期版本的 Elasticsearch 进行比较,那么 7.x 和 6.x 提供了更强大的功能。它们提供了使 AWS Elasticsearch 更安全、更快、更易于使用的功能。

更好的保护 - 最新版本的 Elasticsearch 可防止复杂查询对集群性能和稳定性产生负面影响。

更高的索引性能 - 它们提供了改进的索引功能,从而提高了数据更新的吞吐量。

Vega 可视化 - 最新版本的 Elasticsearch 支持Vega可视化语言。这种 Vega 语言使用户能够进行上下文感知查询。此外,它还可以帮助将多个数据源合并到单个图形中,以及为图形添加用户交互等等。

Java 高级 REST 客户端 - 与低级客户端相比,Java REST 客户端提供了简化的开发体验。AWS Elasticsearch 支持大多数 Elasticsearch API。