AWS Elasticsearch

什么是 AWS Elasticsearch

Elasticsearch 是一种开源数据库工具,可以轻松部署和操作。它通常用于分析目的和搜索您的日志和数据。基本上,它是一个NoSQL 数据库,以文档格式存储非结构化数据。除此之外,如果我们谈论 AWS Elasticsearch,它就像亚马逊一样,它更容易作为一种服务在云中创建它。您可以将其用于各种用途,不仅可以用于在线查看您的日志或数据,还可以将其连接到您的云表并在创建 AWS Elasticsearch 后使用它进行建模。

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

在本章中,我们将描述 AWS Elasticsearch Services 的以下几点:

  • 什么是 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 Service 的安全访问很容易。为VPC的完美维护而做。 AWS IAM 和 Amazon Cognito 策略有助于管理身份验证和访问控制。用户可以使用 Amazon VPC 为其在 Elasticsearch 服务中的数据实现网络隔离。

3) 经济高效

Amazon Elasticsearch 服务的最大优势之一是您只需为您消耗的资源付费。它为用户提供了一个选择,他们可以选择按需定价而无需预付费用。正如我们已经说过的,Amazon Elasticsearch 服务是一项完全托管的服务;它通过取消 Elasticsearch 专家团队来管理和监控集群来降低运营成本。

4) 易于扩展和可用

AWS Elasticsearch 是一个高度可扩展的工具。它使用户能够在单个集群中存储多达 3 PB 的数据。除此之外,它还允许用户通过Kibana 等用户界面运行大型日志分析工作负载。通过单个 API 调用或在 AWS 控制台中单击几下,可以轻松地启动和关闭集群。

多可用区部署允许在同一区域的三个可用区之间复制数据。使用这一点,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 Service 终端节点公开的硬件、软件或数据。

AWS Elasticsearch

In在这个 AWS Elasticsearch 架构中,您会看到 弹性负载平衡,其主要目标是将流量分配到代理服务器并启用自动恢复以保持实例可用性。 Elastic Load Balancing 在这里使用高可用性设计来实现这一目标。上述模板可轻松启动三个 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 具有高度可扩展性,因为它提供高达 3PB 的附加存储来保存数据。
  • 除此之外,它还支持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。这些步骤如下:

  • 注册 AWS 账户
  • 创建 Amazon ES 域
  • 将数据上传到 Amazon ES 域以进行索引
  • 在亚马逊域中搜索文档
  • 删除 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 服务域的步骤。

  • 定义您的域
  • 配置您的集群
  • 设置访问政策
  • 回顾

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

定义域

  • 使用您的凭证登录您的 AWS 账户。
  • 要在 Elasticsearch Service 页面上导航,请转到 Analytics 部分,点击 Elasticsearch Service。
  • 点击创建新域按钮,然后选择开发和测试。
  • 在这里,您需要选择 Elasticsearch 版本和首选部署类型。 Elasticsearch 7.4.0 是最新版本,我们也是这个版本。

配置您的域

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

设置访问策略

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

审核

域创建的最后一步是审核。审核页面会在完成之前一次性显示所有设置,这些设置是您在之前的步骤中设置的。

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

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

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

第 3 步: 上传数据以编制索引

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

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

通过命令行上传单个文档

在命令行上执行以下命令即可上传Amazon ES 域中的单个文档。

curl-XPUT-u master-user:master-user-password domain-endpoint/books/_doc/1
'{
   "book_name": "Know your Worth",
   "author": ["NK Sondhi", "Vibha Malhotra"],
   "publisher": "General Press",
   "publishing_date": "Feburary 2017",
   "ISBN": "8180320235",
   "length": "224 pages"
}'
-H 'Content-Type: application/json'

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

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

{ "index": { "_index": "books", "_id": "2" } }
{ "book_name": "The End of Imagination", "author": "Arundhati Roy", "publisher": "Haymarket Books", "publishing_date": "December 1998", "ISBN": "9781608466191", "length": "408 pages" }
{ "index": { "_index": "books", "_id": "3" } }
{ "book_name": "Power of Positive Thinking", "author": "Norman Vincent Peale", "publisher": "Prentice Hall", "publishing_date": "October 1952", "ISBN": "9780671635305", "length": "240 pages" }

2、现在,运行以下命令将 json 文件上传到书籍域。

curl XPOST-u master-user:master-user-password domain-endpoint/_bulk-data-binary @bulk_books.json-H 'Content-Type: application/json'

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

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

使用下面的示例,我们将在书籍中查找技术书籍 域。

通过命令行搜索文档

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

curl XGET-u master-user:master-user-password 'domain-endpoint/books/_search?q=technical&pretty=true'

使用 Kibana 界面搜索文档

1.在浏览器上,导航到您的 Amazon ES 域的 Kibana 插件。在 Amazon ES 控制台上,您将在域控制面板上获得 Kibana 终端节点。 URL 格式将类似于:

domain-endpoint/_plugin/kibana/

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

3.在这里,必须至少配置一个索引模式才能使用 Kibana,因为 Kibana 使用这些模式来确定您要分析的索引。由于我们已经创建了books 域,因此,为本教程输入books ,然后选择创建。

4.现在,您将看到 索引模式 显示的各种文档字段,例如 book_name、作者、出版商等。现在,选择 发现 来搜索您的数据。

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

步骤 5: 删除 Amazon ES 域

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

  • 使用用户名和密码登录 Amazon Elasticsearch Service 控制台。
  • 在导航页面中,在我的域

下选择图书域

  • 现在,选择操作,然后在其中选择删除域。
  • 最后,选中删除域复选框并选择删除。

支持的 Elasticsearch 版本

但是,AWS Elasticsearch 并不支持所有版本的 Elasticsearch。但是 AWS Elasticsearch 支持以下版本的 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。

在本章中,我们将学习在Windows 操作系统上安装Elasticsearch 以及需要安装的先决条件。按照下面的教程一步一步学习 Elasticsearch 的安装:Elasticsearch 的先决条件下载并安装 Ela ...