开发人员指南 api version 2015-01-01 - aws...

170
Amazon Elasticsearch Service 开发人员指南 API 版本 2015-01-01

Upload: dinhnhu

Post on 18-Feb-2018

273 views

Category:

Documents


22 download

TRANSCRIPT

Page 1: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service开发人员指南

API 版本 2015-01-01

Page 2: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南

Amazon Elasticsearch Service: 开发人员指南Copyright © 2018 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's, in any mannerthat is likely to cause confusion among customers, or in any manner that disparages or discredits Amazon. All other trademarks notowned by Amazon are the property of their respective owners, who may or may not be affiliated with, connected to, or sponsored byAmazon.

Page 3: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南

Table of Contents什么是 Amazon Elasticsearch Service? ................................................................................................ 1

Amazon Elasticsearch Service 的功能 ............................................................................................ 1支持的 Elasticsearch 版本 ............................................................................................................ 2Amazon Elasticsearch Service 入门 ............................................................................................... 3注册 AWS ................................................................................................................................. 3访问 Amazon ES ........................................................................................................................ 4Amazon ES 区域和终端节点 ......................................................................................................... 4选择实例类型 ............................................................................................................................. 4Amazon ES 扩展 ........................................................................................................................ 4使用 Amazon EBS 卷作为存储 ..................................................................................................... 5签名请求 .................................................................................................................................... 5相关服务 .................................................................................................................................... 5Amazon ES 定价 ........................................................................................................................ 6

Amazon ES 域入门 ............................................................................................................................. 7步骤 1:创建 Amazon ES 域 ........................................................................................................ 7步骤 2:上传数据用于索引 ........................................................................................................... 9步骤 3:在 Amazon ES 域搜索文档 ............................................................................................. 10步骤 4:删除 Amazon ES 域 ...................................................................................................... 10

创建和配置 Amazon ES 域 ................................................................................................................. 12创建 Amazon ES 域 ................................................................................................................. 12

创建 Amazon ES 域 (控制台) .............................................................................................. 12创建 Amazon ES 域 (AWS CLI) .......................................................................................... 14创建 Amazon ES 域 (AWS 软件开发工具包) .......................................................................... 16

配置 Amazon ES 域 .................................................................................................................. 17配置 Amazon ES 域 (控制台) .............................................................................................. 17配置 Amazon ES 域 (AWS CLI) .......................................................................................... 18配置 Amazon ES 域 (AWS 软件开发工具包) .......................................................................... 19

配置基于 EBS 的存储 ................................................................................................................ 19配置基于 EBS 的存储 (控制台) ............................................................................................ 19配置基于 EBS 的存储 (AWS CLI) ........................................................................................ 20配置基于 EBS 的存储 (AWS 软件开发工具包) ........................................................................ 21

修改 VPC 访问配置 ................................................................................................................... 21配置 VPC 访问 (控制台) ..................................................................................................... 21

配置访问策略 ............................................................................................................................ 21配置访问策略 (控制台) ....................................................................................................... 21配置访问策略 (AWS CLI) .................................................................................................... 22配置访问策略 (AWS 软件开发工具包) ................................................................................... 23

配置自动快照 ............................................................................................................................ 23配置快照 (控制台) ............................................................................................................. 23配置快照 (AWS CLI) .......................................................................................................... 23配置快照 (AWS 软件开发工具包) ......................................................................................... 24

配置高级选项 ............................................................................................................................ 24配置高级选项 (控制台) ....................................................................................................... 24配置高级选项 (AWS CLI) .................................................................................................... 25配置高级选项 (AWS 软件开发工具包) ................................................................................... 25

配置慢速日志 ............................................................................................................................ 25启用慢速日志发布 (控制台) ................................................................................................. 25启用慢速日志发布 (AWS CLI) ............................................................................................. 26启用慢速日志发布 (AWS 软件开发工具包) ............................................................................. 27设置 Elasticsearch 日志记录阈值 ......................................................................................... 27查看慢速日志 .................................................................................................................... 28

访问控制 .......................................................................................................................................... 29策略的类型 ............................................................................................................................... 29

基于资源的策略 ................................................................................................................. 29

API 版本 2015-01-01iii

Page 4: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南

基于身份的策略 ................................................................................................................. 31基于 IP 的策略 ................................................................................................................. 31

签署 Amazon ES 请求 ............................................................................................................... 32当策略发生冲突时 ...................................................................................................................... 33策略元素参考 ............................................................................................................................ 33高级选项和 API 注意事项 ........................................................................................................... 37配置访问策略 ............................................................................................................................ 39其他示例策略 ............................................................................................................................ 39

管理 Amazon ES 域 .......................................................................................................................... 40关于配置更改 ............................................................................................................................ 40配置更改的费用 ......................................................................................................................... 41启用区域感知 (控制台) ............................................................................................................... 41使用 Amazon CloudWatch 监控群集指标和统计数据 (控制台) ........................................................... 42

群集指标 .......................................................................................................................... 43专用主节点指标 ................................................................................................................. 46EBS 卷指标。 .................................................................................................................. 47

使用 AWS CloudTrail 记录配置服务调用 ....................................................................................... 49CloudTrail 中的 Amazon ES 信息 ........................................................................................ 50了解 Amazon ES 日志文件条目 ........................................................................................... 51

标记 Amazon Elasticsearch Service 域 ......................................................................................... 51使用标签 (控制台) ............................................................................................................. 52使用标签 (AWS CLI) .......................................................................................................... 52使用标签 (AWS 软件开发工具包) ......................................................................................... 53

为数据建立索引 ................................................................................................................................. 54建立索引的简介 ......................................................................................................................... 54编程索引 .................................................................................................................................. 55

Python ............................................................................................................................. 55Java ................................................................................................................................ 58

将流数据到加载到 Amazon ES ............................................................................................................ 61从 Amazon S3 将流数据加载到 Amazon ES .................................................................................. 61

设置从 Amazon S3 将流数据加载到 Amazon ES .................................................................... 62从 Amazon Kinesis 将流数据加载到 Amazon ES ............................................................................ 64

设置从 Amazon Kinesis 将流数据加载到 Amazon ES .............................................................. 65从 Amazon Kinesis Firehose 将流数据加载到 Amazon ES ............................................................... 67从 Amazon DynamoDB 将流数据加载到 Amazon ES ...................................................................... 67从 Amazon CloudWatch 将流数据加载到 Amazon ES ..................................................................... 67将数据从 AWS IoT 加载到 Amazon ES ........................................................................................ 67

使用索引快照 .................................................................................................................................... 68手动快照先决条件 ...................................................................................................................... 68注册手动快照存储库 .................................................................................................................. 70

示例 Python 客户端 ........................................................................................................... 70手动创建快照 ............................................................................................................................ 72还原快照 .................................................................................................................................. 72

迁移到不同的 Elasticsearch 版本 ......................................................................................................... 74Kibana 和 Logstash ........................................................................................................................... 76

Kibana ..................................................................................................................................... 76使用代理从 Kibana 访问 Amazon ES ................................................................................... 76将 Kibana 配置为使用 WMS 地图服务器 ............................................................................... 78将本地 Kibana 服务器连接到 Amazon ES ............................................................................. 78

使用 Logstash 插件加载批量数据 ................................................................................................. 79最佳实践 .......................................................................................................................................... 81

调整 Amazon ES 域大小 ............................................................................................................ 81计算存储要求 .................................................................................................................... 81选择分片数量 .................................................................................................................... 82选择实例类型和测试 .......................................................................................................... 82

专用主节点 ............................................................................................................................... 83建议的 CloudWatch 警报 ............................................................................................................ 85

API 版本 2015-01-01iv

Page 5: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南

PB 规模 ........................................................................................................................................... 87VPC 支持 ........................................................................................................................................ 88

限制 ........................................................................................................................................ 90关于 VPC 域的访问策略 ............................................................................................................. 90先决条件 .................................................................................................................................. 91正在创建 VPC .......................................................................................................................... 91在 VPC 子网中预留 IP 地址 ........................................................................................................ 92VPC 访问的服务相关角色 ........................................................................................................... 93从公有访问迁移到 VPC 访问 ....................................................................................................... 93Amazon VPC 文档 .................................................................................................................... 93

静态加密 .......................................................................................................................................... 94启用静态数据加密 ...................................................................................................................... 94禁用静态数据加密 ...................................................................................................................... 94监控对静态数据进行加密的域 ...................................................................................................... 94其他考虑因素 ............................................................................................................................ 95

处理 AWS 服务错误 .......................................................................................................................... 96群集节点失败 ............................................................................................................................ 96红色群集状态 ............................................................................................................................ 96

从连续处理繁重负载恢复 .................................................................................................... 97黄色群集状态 ............................................................................................................................ 98ClusterBlockException ............................................................................................................... 98

缺少可用存储空间 .............................................................................................................. 98由于内存不足而阻止磁盘 .................................................................................................... 98

JVM 内存不足错误 .................................................................................................................... 98故障排除 ........................................................................................................................................ 100

Kibana:我无法向 Kibana 服务终端节点签署 AWS 服务请求 .......................................................... 100Kibana:我没有在 Kibana 4 中看到我的 Elasticsearch 域的索引 ..................................................... 101Kibana:我在使用 Kibana 查看我的数据时收到浏览器错误 ............................................................. 102集成:我在 IAM 控制台中没有看到 Amazon ES 的服务角色 ........................................................... 102域创建:在选择 VPC 访问权限时执行未经授权的操作 .................................................................... 103域创建:在选择 VPC 访问权限后卡在加载状态 ............................................................................. 103开发工具包:在我尝试使用开发工具包时收到证书错误 ................................................................... 103

一般参考 ........................................................................................................................................ 105支持的实例类型 ....................................................................................................................... 105支持的 Elasticsearch 操作 ........................................................................................................ 107

值得注意的 API 差异 ........................................................................................................ 107版本 6.2 ......................................................................................................................... 108版本 6.0 ......................................................................................................................... 109版本 5.5 ......................................................................................................................... 109版本 5.3 ......................................................................................................................... 110版本 5.1 ......................................................................................................................... 111版本 2.3 ......................................................................................................................... 112版本 1.5 ......................................................................................................................... 112

支持的插件 ............................................................................................................................. 112输出插件 ........................................................................................................................ 114

其他支持的资源 ....................................................................................................................... 114Amazon ES 配置 API 参考 ............................................................................................................... 116

操作 ...................................................................................................................................... 116AddTags ........................................................................................................................ 117CreateElasticsearchDomain .............................................................................................. 118DeleteElasticsearchDomain ............................................................................................... 121DeleteElasticsearchServiceRole ......................................................................................... 123DescribeElasticsearchDomain ........................................................................................... 124DescribeElasticsearchDomainConfig ................................................................................... 126DescribeElasticsearchDomains .......................................................................................... 129DescribeElasticsearchInstanceTypeLimits ............................................................................ 132ListDomainNames ........................................................................................................... 134

API 版本 2015-01-01v

Page 6: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南

ListElasticsearchInstanceTypes ......................................................................................... 135ListElasticsearchVersions ................................................................................................. 137ListTags ......................................................................................................................... 138RemoveTags .................................................................................................................. 139UpdateElasticsearchDomainConfig ..................................................................................... 141

数据类型 ................................................................................................................................ 145AdvancedOptions ............................................................................................................ 145AdvancedOptionsStatus .................................................................................................... 145ARN .............................................................................................................................. 146CreateElasticsearchDomainRequest ................................................................................... 146DomainID ....................................................................................................................... 147DomainName .................................................................................................................. 147DomainNameList ............................................................................................................. 147EBSOptions .................................................................................................................... 147ElasticsearchClusterConfig ................................................................................................ 147ElasticsearchDomainConfig ............................................................................................... 148ElasticsearchDomainStatus ............................................................................................... 149ElasticsearchDomainStatusList .......................................................................................... 150EncryptionAtRestOptions .................................................................................................. 150EncryptionAtRestOptionsStatus ......................................................................................... 150EndpointsMap ................................................................................................................. 151LogPublishingOptions ....................................................................................................... 151LogPublishingOptionsStatus .............................................................................................. 151OptionState .................................................................................................................... 152OptionStatus ................................................................................................................... 152ServiceURL .................................................................................................................... 152SnapshotOptions ............................................................................................................. 152SnapshotOptionsStatus .................................................................................................... 153标签 .............................................................................................................................. 153TagKey .......................................................................................................................... 153TagList .......................................................................................................................... 153TagValue ....................................................................................................................... 153VPCDerivedInfo .............................................................................................................. 154VPCDerivedInfoStatus ...................................................................................................... 154VPCOptions .................................................................................................................... 154VPCOptionsStatus ........................................................................................................... 154

错误 ...................................................................................................................................... 155限制 .............................................................................................................................................. 156

群集和实例限制 ....................................................................................................................... 156EBS 卷大小限制 ...................................................................................................................... 156网络限制 ................................................................................................................................ 158Java 进程限制 ........................................................................................................................ 159

使用服务相关角色 ............................................................................................................................ 160适用于 Amazon ES 的服务相关角色权限 ..................................................................................... 160创建适用于 Amazon ES 的服务相关角色 ..................................................................................... 160编辑适用于 Amazon ES 的服务相关角色 ..................................................................................... 161删除适用于 Amazon ES 的服务相关角色 ..................................................................................... 161

清除服务相关角色 ............................................................................................................ 161手动删除服务相关角色 ...................................................................................................... 161

Amazon ES 的文档历史记录 ............................................................................................................. 162AWS 词汇表 ................................................................................................................................... 164

API 版本 2015-01-01vi

Page 7: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南Amazon Elasticsearch Service 的功能

什么是 Amazon ElasticsearchService?

Amazon Elasticsearch Service (Amazon ES) 是一项托管服务,可让您在 AWS 云中轻松创建域及部署、操作和扩展 Elasticsearch 群集。Elasticsearch 是一个流行的开源搜索和分析引擎,用例包括日志分析、实时应用程序监控、点击流分析等。借助 Amazon ES,您可以直接访问 Elasticsearch API,让现有代码和应用程序与服务无缝协作。

Amazon ES 为您的 Elasticsearch 群集预置所有资源并启动群集。它还自动检测和替换失败的 Elasticsearch节点,减少与自管理基础设施相关的开销。您只需调用一次 API 或在控制台中单击几下就可扩展群集。

要开始使用此服务,您需创建一个 Amazon ES 域。Amazon ES 域是包含您指定的计算和存储资源的 AWS云中的 Elasticsearch 群集。例如,您可以指定实例数量、实例类型和存储选项。

此外,Amazon ES 的托管服务还具备以下优势:

• 群集扩展选项• 自我修复群集• 高可用性的复制• 数据持久性• 增强安全性• 节点监控

您可以使用 Amazon ES 控制台在几分钟内设置和配置您的域。如果您更喜欢以编程方式访问,则可以使用AWS 软件开发工具包或 AWS CLI。

设置群集时没有前期成本,您只需为使用的服务资源付费。

主题• Amazon Elasticsearch Service 的功能 (p. 1)• 支持的 Elasticsearch 版本 (p. 2)• Amazon Elasticsearch Service 入门 (p. 3)• 注册 AWS (p. 3)• 访问 Amazon Elasticsearch Service (p. 4)• Amazon Elasticsearch Service 的区域和终端节点 (p. 4)• 选择实例类型 (p. 4)• Amazon Elasticsearch Service 扩展 (p. 4)• 使用 Amazon EBS 卷作为存储 (p. 5)• 签名服务请求 (p. 5)• 相关服务 (p. 5)• Amazon Elasticsearch Service 定价 (p. 6)

Amazon Elasticsearch Service 的功能Amazon ES 包括下列功能:

API 版本 2015-01-011

Page 8: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南支持的 Elasticsearch 版本

Scale

• 大量 CPU、内存和存储容量配置,也称为实例类型• 最多 1.5 PB 实例存储• Amazon EBS 存储卷

安全性

• AWS Identity and Access Management (IAM) 访问控制• 与 Amazon VPC 和 VPC 安全组轻松集成• 静态数据加密

稳定性

• 资源具有多个地理位置,也称为区域和可用区• 利用专用主节点来卸载群集管理任务• 使用自动快照来备份和恢复 Amazon ES 域并跨可用区复制域• 在同一区域的两个可用区之间进行群集节点分配,也称为区域感知

与热门服务集成

• 使用 Kibana 实现数据可视化• 与 Amazon CloudWatch 集成,用于监控 Amazon ES 域指标和设置警报• 与 AWS CloudTrail 集成以审核对 Amazon ES 域的配置 API 调用• 与 Amazon S3、Amazon Kinesis 和 Amazon DynamoDB 集成,将流数据加载到 Amazon ES

支持的 Elasticsearch 版本Amazon ES 目前支持以下 Elasticsearch 版本:

• 6.2• 6.0• 5.5• 5.3• 5.1• 2.3• 1.5

与早期版本的 Elasticsearch 相比,6.x 版本提供了使其更快速、更安全且更易于使用的强大功能。下面是部分亮点:

• 索引拆分 – 如果索引超出了分片的原始数量,_split API 可方便地在新索引中将每个主分片拆分为两个或更多分片。

• Vega 可视化 – Kibana 6.2 支持 Vega 可视化语言,从而进行上下文感知的 Elasticsearch 查询,将多个数据源组合成单个图表,为图表添加用户互动功能等等。

• 排名评估 – _rank_eval API 可让您衡量和跟踪排名搜索结果针对一组查询的表现情况,以确保您的搜索表现与预期相同。

• 复合聚合 – 这些聚合根据一个或多个字段构建复合存储桶,并根据“自然顺序”进行排序(按字母顺序排序术语、按数字或日期排序直方图)。

API 版本 2015-01-012

Page 9: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南Amazon Elasticsearch Service 入门

• 更高的索引性能 – Elasticsearch 的较新版本提供卓越的索引功能,可显著提高数据更新的吞吐量。• 更好的安全保障 – 6.x 版本的 Elasticsearch 提供许多安全措施,旨在防止过于广泛或复杂的查询对集群的

性能和稳定性产生不利影响。

有关 Elasticsearch 版本之间的差异以及 Amazon ES 支持的 API 的更多信息,请参阅 the section called “支持的 Elasticsearch 操作” (p. 107)。

如果您启动新的 Elasticsearch 项目,我们强烈建议您选择受支持的最新 Elasticsearch 版本。如果您的现有域使用的是较旧的 Elasticsearch 版本,您可以选择保留该域或迁移您的数据。有关更多信息,请参阅迁移到不同的 Elasticsearch 版本 (p. 74)。

Amazon Elasticsearch Service 入门开始之前,如果您还没有 AWS 账户,请先注册一个。有关更多信息,请参阅注册 AWS (p. 3)。

建立账户之后,完成 Amazon Elasticsearch Service 入门 (p. 7)教程。如果您在了解该服务时需要更多信息,请参考以下介绍性主题。

设置和运行

• 注册 AWS (p. 3)• 访问 Amazon ES (p. 4)• Amazon ES 域入门 (p. 7)

了解基础知识

• Amazon ES 的区域和终端节点 (p. 4)• Amazon 资源名称和 AWS 命名空间• Amazon ES 扩展 (p. 4)• 选择 Elasticsearch 版本 (p. 2)

选择实例类型和存储

• 选择实例类型 (p. 4)• 配置基于 EBS 的存储 (p. 19)

确保安全

• 签名服务请求 (p. 5)• 配置访问策略 (p. 21)

注册 AWS如果您还不是 AWS 客户,则第一步是创建一个 AWS 账户。如果您已有 AWS 账户,则将自动注册 AmazonES。您可以使用 AWS 账户访问 Amazon ES 和其他 AWS 服务,例如 Amazon S3 和 Amazon EC2。注册是免费的,在您创建域后才会产生费用。正如其他 AWS 服务一样,您仅需按实际使用的资源付费。

创建 AWS 账户

1. 打开 https://aws.amazon.com/,然后选择 Create an AWS Account。

API 版本 2015-01-013

Page 10: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南访问 Amazon ES

Note

如果您之前已登录 AWS 管理控制台,则可能无法在浏览器中执行此操作。在此情况下,请选择 Sign in to a different account,然后选择 Create a new AWS account。

2. 按照屏幕上的说明进行操作。

作为注册流程的一部分,您会收到一个电话,需要您使用电话键盘输入一个 PIN 码。

您必须输入付款信息,然后才能开始使用 Amazon ES。记下您的 AWS 账号,稍后您将会用到它。

访问 Amazon Elasticsearch Service您可以通过 Amazon ES 控制台、AWS 软件开发工具包或 AWS CLI 访问 Amazon ES。

• Amazon ES 控制台可让您创建、配置和监控您的域。使用控制台是开始使用 Amazon ES 的最简单方式。• AWS 软件开发工具包支持所有 Amazon ES 配置 API 操作,让您能够使用您偏好的技术轻松管理您的域。

这些软件开发工具包使用 AWS 凭证根据需要自动签署请求。• AWS CLI 封装所有 Amazon ES 配置 API 操作,提供一个简单的方式来创建和配置域。AWS CLI 使用

AWS 凭证根据需要自动签署请求。

Amazon Elasticsearch Service 的区域和终端节点Amazon ES 提供了用于访问配置 API 的区域终端节点和用于访问 Elasticsearch API 的特定于域的终端节点。您可以使用配置服务来创建和管理您的域。区域配置服务终端节点具有以下格式:

es.region.amazonaws.com

有关受支持区域的列表,请参阅 AWS General Reference中的区域和终端节点。

域的终端节点具有以下格式:

http://search-domainname-domainid.us-east-1.es.amazonaws.com

您可以使用域的终端节点来上传数据、提交搜索请求和执行任何其他受支持的 Elasticsearch 操作 (p. 107)。

选择实例类型实例类型为实例 (在 AWS 云中作为虚拟服务器运行的 Amazon 系统映像 (AMI)) 定义了 CPU、RAM、存储容量和小时成本。根据您拥有的数据量以及您预计的请求数,选择实例类型和您的域的实例数。有关操作指南,请参阅 the section called “调整 Amazon ES 域大小” (p. 81)。

有关实例类型的一般信息,请参阅 Amazon Elasticsearch Service 定价。

Amazon Elasticsearch Service 扩展在创建域时,您可以选择 Elasticsearch 实例的初始数量和实例类型。但是,这些初始选项可能随着时间的推移而变得不够。您可以通过水平扩展 (更多的实例) 或垂直扩展 (更大的实例类型) Amazon ES 域来轻松

API 版本 2015-01-014

Page 11: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南使用 Amazon EBS 卷作为存储

适应增长情况。扩展很简单且不需要停机。要了解更多信息,请参阅the section called “配置 Amazon ES域” (p. 17)和the section called “关于配置更改” (p. 40)。

使用 Amazon EBS 卷作为存储您可以选择将 Amazon ES 域配置为使用 Amazon EBS 卷存储索引,而不是使用实例提供的默认存储。Amazon EBS 卷是一种耐用的数据块级存储设备,可以附加到单个 实例。Amazon ES 支持以下 EBS 卷类型:

• 磁介质• 通用型 (SSD)• 预配置 IOPS (SSD)

有关概述,请参阅 Amazon EC2 文档中的 Amazon EBS 卷。要查看如何在您的 Amazon ES 域中使用Amazon EBS 卷的步骤,请参阅配置基于 EBS 的存储 (p. 19)。有关 Amazon ES 域中支持的 EBS 卷的最小容量和最大容量,请参阅 EBS 卷大小限制 (p. 156)。

签名服务请求如果您使用 AWS 提供了软件开发工具包的编程语言,建议您使用软件开发工具包向 AWS 提交 HTTP 请求。AWS 软件开发工具包大大简化了签署请求的过程,相较于在本地访问 Elasticsearch API,为您节省大量时间。SDK 还可轻松与您的开发环境集成,并可让您轻松访问相关命令。您也可以使用 Amazon ES 控制台和 AWS CLI 提交已签名的请求,无需执行其他操作。

如果您选择直接调用 Elasticsearch API,您必须签署自己的请求。所有配置服务请求必须经过签名。所有请求必须经过签名,除非您为这些服务配置了匿名访问。使用以下步骤签署请求:

1. 您可使用加密哈希函数计算数字签名。输入内容必须包括您的请求文本和秘密访问密钥。

该函数会基于您的输入返回一个哈希值。2. 在请求的 Authorization 标头中包括数字签名。

该服务使用相同的哈希函数和输入重新计算签名。如果所得签名与该请求中的签名相匹配,则服务将处理该请求。否则,服务会拒绝请求。

Amazon ES 支持使用 AWS 签名版本 4 进行身份验证。有关详细信息,请参见 Signature Version 4 SigningProcess。有关发送到 Elasticsearch API 的已签名请求的一些示例,请参阅the section called “编程索引” (p. 55)。

Note

对于用签名版本 4 签署的 HTTP POST 请求,服务会忽略在 URL 中传入的参数。

相关服务Amazon ES 通常用于以下服务:

AWS CloudTrail

使用 AWS CloudTrail 获取您账户的 Amazon ES API 调用和相关事件的历史记录。CloudTrail 是一项Web 服务,用于记录从您的账户发出的 API 调用,并将生成的日志文件传输到您的 Amazon S3 存储

API 版本 2015-01-015

Page 12: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南Amazon ES 定价

桶。您也可以使用 CloudTrail 跟踪对 AWS 资源的更改。有关更多信息,请参阅 使用 AWS CloudTrail审核 Amazon Elasticsearch Service 域 (p. 49)。

Amazon CloudWatch

Amazon ES 域会自动向 Amazon CloudWatch 发送指标,因此您可收集并分析性能统计数据。您可以通过使用 AWS CLI 或 AWS 软件开发工具包来监控这些指标。有关更多信息,请参阅 使用 AmazonCloudWatch 监控群集指标和统计数据 (控制台) (p. 42)。

Kinesis

Kinesis 是一项在实时处理大规模的数据流时可弹性扩展的托管服务。Amazon ES 提供了用于与 Kinesis集成的 Lambda 示例代码。有关更多信息,请参阅从 Kinesis 将流数据加载到 Amazon ES (p. 64)。

Amazon S3

Amazon Simple Storage Service (Amazon S3) 面向 Internet 提供存储。您可以通过 Amazon S3 随时在 Web 上的任何位置存储和检索的任意大小的数据。Amazon ES 提供了用于与 Amazon S3 集成的Lambda 示例代码。有关更多信息,请参阅从 Amazon S3 将流数据加载到 Amazon ES (p. 61)。

AWS IAM

AWS Identity and Access Management (IAM) 是一项 Web 服务,可用于在 AWS 中管理用户和用户权限。您可以使用 IAM 为您的 Amazon ES 域创建基于用户的访问策略。有关更多信息,请参阅 IAM 文档。

Amazon ES 可与以下服务一起使用来提供数据注入:

AWS Lambda

AWS Lambda 是一项由后端 Web 开发人员使用的零管理计算平台,这些开发人员在 AWS 云中运行您的代码。Amazon ES 提供了与 Kinesis 和 Amazon S3 一起在 Lambda 上运行的示例代码。有关更多信息,请参阅将流数据加载到 Amazon ES (p. 61)。

Amazon DynamoDB

Amazon DynamoDB 是一种完全托管的 NoSQL 数据库服务,提供快速而可预测的性能,能够实现无缝扩展。Amazon ES 提供了用于支持 DynamoDB 流和签署 AWS 服务请求的 Logstash 插件。

Amazon Elasticsearch Service 定价使用 AWS,您可以按实际用量付费。对于 Amazon ES,您需要按小时支付使用 EC2 实例和挂载到您的实例的任何 EBS 存储卷的累计大小的费用。标准 AWS 数据传输费同样适用。

但是,存在明显数据传输异常。如果您使用区域感知 (p. 41),则 Amazon ES 不会收取域驻留的两个可用区之间的流量费。分片分配和重新平衡期间,域中会发生大量数据传输。Amazon ES 既不会计量此流量,也不会收取此流量的费用。

有关完整的定价详情,请参阅 Amazon Elasticsearch Service 定价。有关配置更改期间产生的费用的信息,请参阅 the section called “配置更改的费用” (p. 41)。

如果您符合 AWS 免费套餐的资格,则每个月会获得多达 750 小时的 t2.micro.elasticsearch 或t2.small.elasticsearch 实例类型使用权限。您还可以获得多达 10 GB 的 Amazon EBS 存储 (机械硬盘或通用存储)。有关更多信息,请参阅 AWS 免费套餐。

API 版本 2015-01-016

Page 13: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南步骤 1:创建 Amazon ES 域

Amazon Elasticsearch Service 入门本教程介绍如何使用 Amazon Elasticsearch Service (Amazon ES) 创建和配置域。它将指导您完成快速启动并运行域的基本步骤。有关详细的演练,请参阅创建和配置 Amazon ES 域 (p. 12)和本指南中的其他主题。

您可以通过使用 Amazon ES 控制台、AWS CLI 或 AWS 软件开发工具包来完成以下步骤:

1. 创建 Amazon ES 域 (p. 7)2. 将数据上传到 Amazon ES 域以便编制索引 (p. 9)3. 在 Amazon ES 域中搜索文档 (p. 10)4. 删除 Amazon ES 域 (p. 10)

有关安装和设置 AWS CLI 的信息,请参阅 AWS Command Line Interface 用户指南。

Note

如果您要使用 AWS CLI 来完成本教程,您必须使用版本 1.8.9 或更高版本。要了解您安装的 AWSCLI 的版本,请运行 aws --version。

步骤 1:创建 Amazon ES 域Important

此过程简要介绍了如何配置测试域。不应使用它来创建生产域。有关相同过程的综合版本,请参阅创建和配置 Amazon ES 域 (p. 12)。

一个 Amazon Elasticsearch Service (Amazon ES) 域将封装用于处理 HTTP 请求到 AWS 的 Elasticsearch引擎实例、要搜索的索引数据、域快照、访问策略和元数据。您可以通过 Amazon ES 控制台、AWSCLI 或 AWS 软件开发工具包创建 Amazon ES 域。如果您还没有账户,请参阅the section called “注册AWS” (p. 3)。

创建 Amazon ES 域 (控制台)

1. 转至 https://aws.amazon.com,然后选择 Sign In to the Console。2. 在 Analytics 下,选择 Elasticsearch Service。3. 在 Define domain 页面上,对于 Elasticsearch domain name,为域键入一个名称。在本入门教程中,我

们在稍后提供的示例中使用域名 movies。4. 对于 Version,为您的域选择 Elasticsearch 版本。建议您选择最新的受支持版本。有关更多信息,请参

阅 the section called “支持的 Elasticsearch 版本” (p. 2)。5. 选择 Next。6. 对于 Instance count,选择想要的实例数量。在本教程中,您可以使用默认值 1。7. 对于 Instance type,为 Amazon ES 域选择实例类型。在本教程中,我们建议使用

t2.small.elasticsearch,这是一种便宜的小型实例类型,适合用于测试目的。8. 现在,您可以忽略 Enable dedicated master 和 Enable zone awareness 复选框。有关这两项的更多信

息,请参阅关于专用主节点 (p. 83)和启用区域感知 (p. 41)。

API 版本 2015-01-017

Page 14: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南步骤 1:创建 Amazon ES 域

9. 对于 Storage type,选择 EBS。

EBS volume type 和 EBS volume size 框将出现。

a. 对于 EBS volume type,请选择“General Purpose (SSD)”。有关更多信息,请参阅 Amazon EBS卷类型。

b. 对于 EBS volume size,为每个数据节点键入外部存储的大小 (GB)。在本教程中,您可以使用默认值 10。

10. 目前,您可以忽略 Enable encryption at rest。有关此功能的更多信息,请参阅静态加密 (p. 94)。11. 对于 Automated snapshot start hour (自动快照开始时间),请使用默认值。有关更多信息,请参阅 the

section called “配置自动快照” (p. 23)。12. 选择 Next。13. 为简单起见,在本教程中,我们将使用基于 IP 的访问策略。在 Set up access 页面上的 Network

configuration 部分中,选择 Public access。14. 对于 Set the domain access policy to,选择 Allow access to the domain from specific IP(s),然后输入

您的公有 IP 地址,您可以通过在 Google 上搜索“What is my IP?”来找到该地址。然后选择 OK。

要了解有关公有访问权限、VPC 访问和访问策略的更多一般性信息,请参阅访问控制 (p. 29)和 VPC支持 (p. 88)。

15. 选择 Next。16. 在 Review 页面上,查看您的域配置,然后选择 Confirm 。

Note

初始化新域需要十分钟时间。初始化您的域后,您可以上传数据和更改域。

创建 Amazon ES 域 (AWS CLI)

• 运行以下命令来创建一个 Amazon ES 域。

此命令使用 Elasticsearch 版本 6.0 创建一个名为 movies 的域。它指定一个t2.small.elasticsearch 实例类型的实例。此实例类型需要 EBS 存储,因此它指定了一个 10 GB的卷。最后,此命令应用基于 IP 的访问策略来将对域的访问限制为单个 IP 地址。

您需要将命令中的 your_ip_address 替换为您的公有 IP 地址,您可以通过在 Google 上搜索“What ismy IP?”来找到该地址。

aws es create-elasticsearch-domain --domain-name movies --elasticsearch-version 6.0 --elasticsearch-cluster-config InstanceType=t2.small.elasticsearch,InstanceCount=1 --ebs-options EBSEnabled=true,VolumeType=standard,VolumeSize=10 --access-policies '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":["es:*"],"Condition":{"IpAddress":{"aws:SourceIp":["your_ip_address"]}}}]}'

Note

初始化一个域及其资源大约需要十分钟。初始化完成后,该域的终端节点可用于索引和 Amazon ES请求。

使用以下命令查询新域的状态:

aws es describe-elasticsearch-domain --domain movies

创建 Amazon ES 域 (AWS 软件开发工具包)API 版本 2015-01-01

8

Page 15: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南步骤 2:上传数据用于索引

AWS 开发工具包 (Android 和 iOS 开发工具包除外) 支持在 Amazon ES 配置 API 参考 (p. 116)中定义的所有操作,包括 CreateElasticsearchDomain 操作。有关安装和使用 AWS 软件开发工具包的更多信息,请参阅 AWS 软件开发工具包。

步骤 2:将数据上传到 Amazon ES 域以便编制索引您可以在命令行中使用 Elasticsearch 索引和批量处理 API 将数据上传到 Amazon ES 域以便进行检索。

• 使用索引 API 添加或更新单个 Elasticsearch 文档。• 使用批量 API 添加或更新同一 JSON 文件中所述的多个 Elasticsearch 文档。

以下示例请求使用了 curl (常见的 HTTP 客户端)。像 curl 这样的客户端无法执行您的访问策略指定 IAM 用户或角色时所需的请求签名。要成功执行本步骤的说明,您必须使用基于 IP 地址的访问策略以允许未经身份验证的访问,与您在步骤 1 (p. 7) 中进行的配置相似。

您可在 Windows 上安装 curl 并通过命令提示符使用它,但 Windows 用户可能会发现,使用 Cygwin 或Windows Subsystem for Linux 之类的工具更方便。macOS 和大多数 Linux 发行版都预安装有 curl。

上传单个文档到 Amazon ES 域

• 运行以下命令将单个文档添加到 movies 域:

curl -XPUT elasticsearch_domain_endpoint/movies/movie/1 -d '{"director": "Burton, Tim", "genre": ["Comedy","Sci-Fi"], "year": 1996, "actor": ["Jack Nicholson","Pierce Brosnan","Sarah Jessica Parker"], "title": "Mars Attacks!"}' -H 'Content-Type: application/json'

有关此命令的详细说明,以及如何向 Amazon ES 发出签名请求,请参阅 为数据建立索引 (p. 54)。

上传包含多个文档的 JSON 文件到 Amazon ES 域

1. 创建名为 bulk_movies.json 的文件。将以下内容复制并粘贴到其中,包括尾部换行:

{ "index" : { "_index": "movies", "_type" : "movie", "_id" : "2" } }{"director": "Frankenheimer, John", "genre": ["Drama", "Mystery", "Thriller"], "year": 1962, "actor": ["Lansbury, Angela", "Sinatra, Frank", "Leigh, Janet", "Harvey, Laurence", "Silva, Henry", "Frees, Paul", "Gregory, James", "Bissell, Whit", "McGiver, John", "Parrish, Leslie", "Edwards, James", "Flowers, Bess", "Dhiegh, Khigh", "Payne, Julie", "Kleeb, Helen", "Gray, Joe", "Nalder, Reggie", "Stevens, Bert", "Masters, Michael", "Lowell, Tom"], "title": "The Manchurian Candidate"}{ "index" : { "_index": "movies", "_type" : "movie", "_id" : "3" } }{"director": "Baird, Stuart", "genre": ["Action", "Crime", "Thriller"], "year": 1998, "actor": ["Downey Jr., Robert", "Jones, Tommy Lee", "Snipes, Wesley", "Pantoliano, Joe", "Jacob, Ir\u00e8ne", "Nelligan, Kate", "Roebuck, Daniel", "Malahide, Patrick", "Richardson, LaTanya", "Wood, Tom", "Kosik, Thomas", "Stellate, Nick", "Minkoff, Robert", "Brown, Spitfire", "Foster, Reese", "Spielbauer, Bruce", "Mukherji, Kevin", "Cray, Ed", "Fordham, David", "Jett, Charlie"], "title": "U.S. Marshals"}{ "index" : { "_index": "movies", "_type" : "movie", "_id" : "4" } }{"director": "Ray, Nicholas", "genre": ["Drama", "Romance"], "year": 1955, "actor": ["Hopper, Dennis", "Wood, Natalie", "Dean, James", "Mineo, Sal", "Backus, Jim", "Platt, Edward", "Ray, Nicholas", "Hopper, William", "Allen, Corey", "Birch, Paul", "Hudson, Rochelle", "Doran, Ann", "Hicks, Chuck", "Leigh, Nelson", "Williams, Robert", "Wessel, Dick", "Bryar, Paul", "Sessions, Almira", "McMahon, David", "Peters Jr., House"], "title": "Rebel Without a Cause"}

2. 运行以下命令以将该文件上传到 movies 域:

API 版本 2015-01-019

Page 16: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南步骤 3:在 Amazon ES 域搜索文档

curl -XPOST elasticsearch_domain_endpoint/_bulk --data-binary @bulk_movies.json -H 'Content-Type: application/json'

有关批量文件格式的更多信息,请参阅为数据建立索引 (p. 54)。

Note

该服务支持从在 Amazon ES 和自管理 Elasticsearch 群集中创建的手动快照迁移数据。从自管理Elasticsearch 群集还原索引是将数据迁移到 Amazon ES 的常见方法。有关更多信息,请参阅 thesection called “还原快照” (p. 72)。

步骤 3:在 Amazon ES 域中搜索文档要在 Amazon ES 域中搜索文档,请使用 Elasticsearch 搜索 API。也可以使用 Kibana (p. 76) 在域中搜索文档。

Note

使用 curl 的请求是未经身份验证的,并且依赖基于 IP 的访问策略。

从命令行搜索文档

• 运行以下命令在 movies 域中搜索单词 mars:

curl -XGET 'elasticsearch_domain_endpoint/movies/_search?q=mars'

使用 Kibana (控制台) 从 Amazon ES 域中搜索文档

1. 将您的浏览器指向 Amazon ES 域的 Kibana 插件。您可以在 Amazon ES 控制台的域控制面板中找到Kibana 终端节点。URL 遵循以下格式:

https://domain.region.es.amazonaws.com/_plugin/kibana/

2. 要使用 Kibana,您必须至少配置一个索引模式。Kibana 使用这些模式来标识要分析的索引。在本教程中,请输入电影,然后选择创建。

3. Index Patterns (索引模式) 屏幕显示您的各种文档字段,actor 和 director 等字段。现在,选择Discover (发现) 以搜索您的数据。

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

步骤 4:删除 Amazon ES 域由于本教程中的 movies 域用于测试目的,因此在试用完毕后应将其删除,以避免产生费用。

删除 Amazon ES 域 (控制台)

1. 登录 Amazon Elasticsearch Service 控制台。2. 在导航窗格中的 My domains 下,选择 movies 域。3. 选择 Delete Elasticsearch domain。4. 选择 Delete domain。

API 版本 2015-01-0110

Page 17: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南步骤 4:删除 Amazon ES 域

5. 选中 Delete the domain 复选框,然后选择 Delete。

删除 Amazon ES 域 (AWS CLI)

• 运行以下命令删除 movies 域:

aws es delete-elasticsearch-domain --domain-name movies

Note

删除域将删除所有计费 Amazon ES 资源。但是,使用本机 Elasticsearch API 创建的域的任何手动快照不会被删除。如果您将来需要重新创建 Amazon ES 域,请考虑保存快照。如果您不打算重新创建域,则可以安全地删除手动创建的任何快照。

删除 Amazon ES 域 (AWS 软件开发工具包)

AWS 开发工具包 (Android 和 iOS 开发工具包除外) 支持在 Amazon ES 配置 API 参考 (p. 116)中定义的所有操作,包括 DeleteElasticsearchDomain 操作。有关安装和使用 AWS 软件开发工具包的更多信息,请参阅 AWS 软件开发工具包。

API 版本 2015-01-0111

Page 18: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南创建 Amazon ES 域

创建和配置 Amazon ElasticsearchService 域

本章介绍了如何创建和配置 Amazon Elasticsearch Service (Amazon ES) 域。Amazon ES 域是由 AmazonElasticsearch Service 终端节点公开的硬件、软件和数据。

与入门 (p. 7)教程中的简短说明不同,本章描述了所有选项,并提供了相关的参考信息。您可以使用对Amazon ES 控制台、AWS Command Line Interface (AWS CLI) 或 AWS 软件开发工具包的说明完成每个步骤。

主题• 创建 Amazon ES 域 (p. 12)• 配置 Amazon ES 域 (p. 17)• 配置基于 EBS 的存储 (p. 19)• 修改 VPC 访问配置 (p. 21)• 配置访问策略 (p. 21)• 配置自动快照 (p. 23)• 配置高级选项 (p. 24)• 配置慢速日志 (p. 25)

创建 Amazon ES 域本部分介绍如何使用 Amazon ES 控制台或使用 AWS CLI 的 create-elasticsearch-domain 命令创建Amazon ES 域。AWS CLI 的过程包括语法和示例。

创建 Amazon ES 域 (控制台)使用以下步骤使用控制台创建一个 Amazon ES 域。

创建 Amazon ES 域 (控制台)

1. 转至 https://aws.amazon.com,然后选择 Sign In to the Console。2. 在 Analytics 下,选择 Elasticsearch Service。3. 选择 Create a new domain。

如果这是您为 AWS 账户创建的第一个 Amazon ES 域,也可以选择 Get Started。4. 在 Define domain 页上,对于 Domain name,为您的域键入一个名称。域名必须满足以下条件:

• 唯一标识某个域• 以小写字母开头• 包含 3 到 28 个字符• 只包含小写字母 a-z、数字 0-9 和连字符 (-)

API 版本 2015-01-0112

Page 19: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南创建 Amazon ES 域 (控制台)

5. 对于 Version,为您的域选择 Elasticsearch 版本。建议您选择最新版本。有关更多信息,请参阅 thesection called “支持的 Elasticsearch 版本” (p. 2)。

6. 选择 Next。7. 对于 Instance count,选择想要的实例数量。

默认为一个。有关最大值,请参阅the section called “群集和实例限制” (p. 156)。我们建议最少三个实例,以避免潜在的 Elasticsearch 问题,例如分裂大脑问题。如果您有三个专用主节点 (p. 83),我们仍建议至少将两个数据节点用于复制。单节点群集适合开发和测试,但不应用于生产工作负载。有关更多指导,请参阅the section called “调整 Amazon ES 域大小” (p. 81)。

8. 对于 Instance type,为数据节点选择实例类型。

要查看 Amazon ES 支持的实例类型的列表,请参阅支持的实例类型 (p. 105)。9. (可选) 如果您必须确保群集的稳定性,或者您有一个超过 10 个实例的域,请启用专用主节点。专用主节

点可增强群集稳定性,对于包含 10 个以上实例的域而言是必需的。有关更多信息,请参阅关于专用主节点 (p. 83)。

a. 选中 Enable dedicated master 复选框。b. 对于 Dedicated master instance type,为专用主节点选择实例类型。

有关 Amazon ES 支持的实例类型的列表,请参阅支持的实例类型 (p. 105)。

Note

• 您可以为专用主节点选择与数据节点不同的实例类型。例如,您可以为数据节点选择通用或存储优化实例,但为专用主节点选择计算优化实例。

c. 对于 Dedicated master instance count,为专用主节点选择实例数量。

我们建议您选择奇数数量的实例,以避免潜在的 Elasticsearch 问题,如分裂大脑问题。默认和推荐的数量是三个。

10. (可选) 要为数据节点提供高可用性,请选中 Enable zone awareness 复选框。

区域感知在同一区域中的两个可用区之间分发 Amazon ES 数据节点。如果您启用区域感知,则您必须具有偶数数量的实例,并且必须使用本机 Elasticsearch API 为您的群集创建副本分片。此过程可在两个可用区之间平均分配分片。有关更多信息,请参阅启用区域感知 (p. 41)。

11. 对于 Storage type,选择 Instance (默认) 或 EBS。

如果您的 Amazon ES 域需要更多存储空间,则使用 EBS 卷进行存储,而不是挂载到选定实例类型的存储。增加 EBS 卷的存储容量通常对包含大型索引或大量索引的域有好处。有关创建超大型域的指南,请参阅 PB 规模 (p. 87)。如果您选择 EBS,下列框将出现:

a. 对于 EBS volume type,选择 EBS 卷类型。

如果您选择预配置 IOPS (SSD) 作为 EBS 卷类型,对于 Provisioned IOPS,键入您想要的基准IOPS 性能。有关更多信息,请参阅 Amazon EC2 文档中的 Amazon EBS 卷。

b. 对于 EBS volume size,键入要附加到每个数据节点的 EBS 卷的大小。

EBS volume size 是按节点计算的。您可使用以下公式计算 Amazon ES 域的群集总大小:(数据节点数) * (EBS 卷大小)。EBS 卷最小容量和最大容量取决于指定的 EBS 卷类型及其挂载到的实例类型。要了解更多信息,请参阅 EBS 卷大小限制 (p. 156)。

12. (可选) 要启用静态数据加密,请选中Enable encryption at rest 复选框。

选择 (Default) aws/es ((默认值) aws/es) 以让 Amazon ES 代表您创建 KMS 加密密钥 (或使用它已创建的加密密钥)。否则,请从 KMS 主密钥菜单中选择您自己的 KMS 加密密钥。要了解更多信息,请参阅“静态加密 (p. 94)”。

13. 对于 Automated snapshot start hour,请选择自动创建域索引的每日快照的时间。

有关更多信息和建议,请参阅the section called “配置自动快照” (p. 23)。

API 版本 2015-01-0113

Page 20: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南创建 Amazon ES 域 (AWS CLI)

14. (可选) 选择 Advanced options。有关选项的摘要,请参阅the section called “配置高级选项” (p. 24)。15. 选择 Next。16. 在 Set up access 页面上,在 Network configuration 部分中,选择 Public Access 或 VPC access。如果

选择 Public access,则跳至步骤 17。如果选择 VPC access,则确保您满足先决条件 (p. 91),然后执行下列操作:

a. 对于 VPC,选择要使用的 VPC 的 ID。

Note

VPC 和域必须位于同一 AWS 区域中,并且您必须选择具有设置为 Default 的租赁的VPC。Amazon ES 尚不支持使用专用租赁的 VPC。

b. 对于 Subnet,选择一个子网。如果您在步骤 10 中启用了区域感知,则必须选择两个子网。Amazon ES 会将 VPC 终端节点和弹性网络接口 (ENI) 放入子网中。

Note

必须在子网中为网络接口预留足够的 IP 地址。有关更多信息,请参阅在 VPC 子网中预留IP 地址 (p. 92)。

c. 对于 Security groups,选择需要访问 Amazon ES 域的 VPC 安全组。有关更多信息,请参阅 VPC支持 (p. 88)。

d. 对于 IAM role,保留默认角色。Amazon ES 使用该预定义角色 (也称服务相关角色) 访问您的 VPC并将 VPC 终端节点和网络接口放入 VPC 的子网中。有关更多信息,请参阅用于 VPC 访问的服务相关角色 (p. 93)。

17. 对于 Set the domain access policy to,从 Select a template 下拉列表中选择一个预配置的策略,然后编辑它来满足您的域的需要。或者,您也可以在 Add or edit the access policy 框中添加一个或多个Identity and Access Management (IAM) 策略语句。有关更多信息,请参阅访问控制 (p. 29)、thesection called “配置访问策略 ” (p. 21)和the section called “关于 VPC 域的访问策略” (p. 90)。

Note

如果您在步骤 16 中选择 VPC access (VPC 访问),则基于 IP 的策略模板在下拉列表中不可用,且您无法手动配置基于 IP 的策略。但您可以使用安全组来控制哪些 IP 地址可以访问该域。要了解更多信息,请参阅“the section called “关于 VPC 域的访问策略” (p. 90)”。

18. 选择 Next。19. 在 Review 页面上,查看您的域配置,然后选择 Confirm and create。20. 选择 OK。

Note

初始化新域需要十分钟时间。初始化您的域后,您可以上传数据和更改域。

创建 Amazon ES 域 (AWS CLI)除了使用控制台创建 Amazon ES 域之外,您还可以使用 AWS CLI 创建域。使用以下语法创建一个 AmazonES 域。

aws es create-elasticsearch-domain --domain-name <value>

[--elasticsearch-version <value>] [--elasticsearch-cluster-config <value>] [--ebs-options <value>] [--access-policies <value>] [--snapshot-options <value>] [--vpc-options <value>] API 版本 2015-01-01

14

Page 21: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南创建 Amazon ES 域 (AWS CLI)

[--advanced-options <value>] [--log-publishing-options <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>] [--encryption-at-rest-options <value>]

下表提供了有关每个可选参数的更多信息。

可选参数 描述

--elasticsearch-version 指定域的 Elasticsearch 版本。如果未指定,则默认值为 1.5。有关更多信息,请参阅选择 Elasticsearch 版本 (p. 2)。

--elasticsearch-cluster-config

指定实例类型和域数量,是否启用区域感知,以及域是否使用专用主节点。专用主节点可增强群集稳定性,对于包含 10 个以上实例的域而言是必需的。有关更多信息,请参阅配置 Amazon ES域 (p. 18)。

--ebs-options 指定该域是否使用 EBS 卷进行存储。如果为 true,则此参数还必须指定 EBS 卷类型、大小和 IOPS 值 (如果适用)。有关更多信息,请参阅配置基于 EBS 的存储 (p. 20)。

--access-policies 指定该域的访问策略。有关更多信息,请参阅配置访问策略 (p. 22)。

--snapshot-options 指定该服务为域中的索引创建每日自动快照的 UTC 时间。默认值为0 (即午夜),这意味着快照将在午夜到凌晨 1 点之间的任意时间创建。有关更多信息,请参阅配置快照 (p. 23)。

--advanced-options 指定是否允许在 HTTP 请求对象的正文中引用索引。有关更多信息,请参阅配置高级选项 (p. 25)。

--generate-cli-skeleton 显示 JSON 的所有指定参数。将输出保存到一个文件中,以便您之后可以通过 --cli-input-json 参数读取该文件,而不需要在命令行中键入参数。有关更多信息,请参阅 AWS 命令行界面用户指南中的生成 CLI 框架和 CLI 输入 JSON 参数。

--cli-input-json 指定包含一组 CLI 参数的 JSON 文件的名称。有关更多信息,请参阅 AWS 命令行界面用户指南中的生成 CLI 框架和 CLI 输入 JSON参数。

--log-publishing-options 指定 Amazon ES 是否应将 Elasticsearch 慢速日志发布到CloudWatch。有关更多信息,请参阅 the section called “配置慢速日志” (p. 25)。

--vpc-options 指定是否在 Amazon VPC (VPC) 中启动 Amazon ES 域。要了解更多信息,请参阅“VPC 支持 (p. 88)”。

--encryption-at-rest-options

指定是否启用静态数据加密 (p. 94)。

示例

第一个示例演示了以下 Amazon ES 域配置:

• 使用 Elasticsearch 版本 5.5 创建名为 weblogs 的 Amazon ES 域• 用 m4.large.elasticsearch 实例类型的两个实例填充该域• 使用 100 GB 机械磁盘 EBS 卷作为每个数据节点的存储

API 版本 2015-01-0115

Page 22: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南创建 Amazon ES 域 (AWS 软件开发工具包)

• 允许匿名访问,但只能从单个 IP 地址访问:192.0.2.0/32

aws es create-elasticsearch-domain --domain-name weblogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.large.elasticsearch,InstanceCount=2 --ebs-options EBSEnabled=true,VolumeType=standard,VolumeSize=100 --access-policies '{"Version": "2012-10-17", "Statement": [{"Action": "es:*", "Principal":"*","Effect": "Allow", "Condition": {"IpAddress":{"aws:SourceIp":["192.0.2.0/32"]}}}]}'

下一个示例演示了以下 Amazon ES 域配置:

• 使用 Elasticsearch 版本 5.5 创建名为 weblogs 的 Amazon ES 域• 用 m4.large.elasticsearch 实例类型的六个实例填充该域• 使用 100 GB 通用型 (SSD) EBS 卷作为每个数据节点的存储• 限制单个用户访问该服务,由用户的 AWS 账户 ID 标识:555555555555• 启用区域感知

aws es create-elasticsearch-domain --domain-name weblogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.large.elasticsearch,InstanceCount=6,ZoneAwarenessEnabled=true --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=100 --access-policies '{"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::555555555555:root" }, "Action":"es:*", "Resource": "arn:aws:es:us-east-1:555555555555:domain/logs/*" } ] }'

下一个示例演示了以下 Amazon ES 域配置:

• 使用 Elasticsearch 版本 5.5 创建名为 weblogs 的 Amazon ES 域• 用 m4.xlarge.elasticsearch 实例类型的十个实例填充该域• 用 m4.large.elasticsearch 实例类型的三个实例作为专用主节点填充该域• 使用 100 GB 预配置 IOPS EBS 卷作为存储,用每个数据节点 1000 IOPS 的基准性能进行配置• 限制对单个用户和单个子资源的访问,_search API• 配置为 UTC 凌晨 3 点自动创建索引的每日快照

aws es create-elasticsearch-domain --domain-name weblogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.xlarge.elasticsearch,InstanceCount=10,DedicatedMasterEnabled=true,DedicatedMasterType=m4.large.elasticsearch,DedicatedMasterCount=3 --ebs-options EBSEnabled=true,VolumeType=io1,VolumeSize=100,Iops=1000 --access-policies '{"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::555555555555:root" }, "Action": "es:*", "Resource": "arn:aws:es:us-east-1:555555555555:domain/mylogs/_search" } ] }' --snapshot-options AutomatedSnapshotStartHour=3

Note

如果您尝试创建 Amazon ES 域并且已存在具有相同名称的域,则 CLI 不会报告错误。相反,它会返回现有域的详细信息。

创建 Amazon ES 域 (AWS 软件开发工具包)AWS 软件开发工具包 (除 Android 和 iOS 软件开发工具包之外) 支持在 Amazon ES 配置 API 参考 (p. 116)中定义的所有操作,包括 CreateElasticsearchDomain。有关安装和使用 AWS 软件开发工具包的更多信息,请参阅 AWS 软件开发工具包。

API 版本 2015-01-0116

Page 23: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南配置 Amazon ES 域

配置 Amazon ES 域为了满足增加的流量和数据的要求,您可以使用以下任何更改更新 Amazon ES 域配置:

• 更改实例数量• 更改实例类型• 启用或禁用专用主节点• 启用或禁用区域感知• 配置存储设置• 更改自动创建域索引的快照的开始时间• 更改 VPC 子网和安全组• 配置高级选项

Note

有关配置一个域使用 EBS 卷作为存储的信息,请参阅配置基于 EBS 的存储 (p. 19)。

配置 Amazon ES 域 (控制台)使用以下步骤通过控制台对您的 Amazon ES 配置进行更新。

配置 Amazon ES 域 (控制台)

1. 转至 https://aws.amazon.com,然后选择 Sign In to the Console。2. 在 Analytics 下,选择 Elasticsearch Service。3. 在导航窗格中的 My domains 下,选择要更新的域。4. 选择 Configure cluster。5. 在 Configure cluster 页上,更新域的配置。

群集是一个或多个数据节点、可选专用主节点以及运行 Amazon ES 和操作您的域所需的存储的集合。

a. 如果您要更改数据节点的实例类型,对于 Instance type,请选择新的实例类型。

要查看 Amazon ES 支持的实例类型的列表,请参阅支持的实例类型 (p. 105)。b. 如果您要更改实例数量,对于 Instance count,请选择 1 和 20 之间的一个整数。要请求将每个域的

实例数提高到最多 100 个,请通过 AWS 支持中心创建案例。c. 如果您要提高群集的稳定性,或者您的域中包含超过 10 个实例,请为您的群集启用专用主节点。

有关更多信息,请参阅关于专用主节点 (p. 83)。

i. 选中 Enable dedicated master 复选框。ii. 对于 Dedicated master instance type,为专用主节点选择实例类型。

您可以为专用主节点选择与数据节点不同的实例类型。

要查看 Amazon ES 支持的实例类型的列表,请参阅支持的实例类型 (p. 105)。iii. 对于 Dedicated master instance count,为专用主节点选择实例数量。

我们建议您选择奇数数量的实例,以避免潜在的 Amazon ES 问题,如分裂大脑问题。默认和推荐的数量是三个。

d. 如果您要启用区域感知,请选中 Enable zone awareness 复选框。如果启用区域感知,您的实例数量必须为偶数。这样就可以在同一区域的两个可用区之间平均分配分片。

API 版本 2015-01-0117

Page 24: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南配置 Amazon ES 域 (AWS CLI)

e. 如果要更改该服务自动创建 Amazon ES 域主索引分片的每日快照的时间,对于 Automatedsnapshot start hour,请选择一个整数。

f. 如果您在创建域时未启用 VPC 访问,则跳到第 7 步。如果启用了 VPC 访问,则可以更改放入了VPC 终端节点的子网并更改安全组:

i. 对于 Subnets,选择一个子网。子网必须预留有足够数量的 IP 地址供网络接口使用。如果您启用了区域感知,则必须选择两个子网。两个子网必须位于同一区域的不同可用区中。有关更多信息,请参阅 VPC 支持 (p. 88)。

ii. 对于 Security groups,请添加需要访问域的安全组。g. (可选) 选择 Advanced options。有关选项的摘要,请参阅the section called “配置高级选

项” (p. 24)。h. 选择 Submit。

配置 Amazon ES 域 (AWS CLI)使用 elasticsearch-cluster-config 选项通过 AWS CLI 来配置您的 Amazon ES 群集。create-elasticsearch-domain 和 update-elasticsearch-domain-config 命令使用以下语法。

语法

--elasticsearch-cluster-config InstanceType=<value>,InstanceCount=<value>,DedicatedMasterEnabled=<value>,DedicatedMasterType=<value>,DedicatedMasterCount=<value>,ZoneAwarenessEnabled=<value>

Note

请不要在同一选项的参数之间包括空格。

下表更详细地介绍了这些参数。

参数 有效值 说明

InstanceType 任何支持的实例类型。请参阅支持的实例类型。

托管该实例的计算机的硬件配置。默认值为m4.large.elasticsearch。

InstanceCount 整数 Amazon ES 域中的实例数量。默认值为 1,最大默认限制为 20。要请求将每个域的实例数提高到最多 100 个,请通过 AWS 支持中心创建案例。

DedicatedMasterEnabled true 或者 false 指定是否为 Amazon ES 域使用专用主节点。默认值为 false。

DedicatedMasterType 任何支持的实例类型 托管主节点的计算机的硬件配置。默认值为m4.large.elasticsearch。

DedicatedMasterCount 整数 用于专用主节点的实例数量。默认为三个。

ZoneAwarenessEnabled true 或者 false 指定是否为 Amazon ES 域启用区域感知。默认值为 false。

示例

以下示例使用 Elasticsearch 版本 5.5 创建名为 mylogs 的 Amazon ES 域,其中包含m4.large.elasticsearch 实例类型的两个实例,并且启用了区域感知:

API 版本 2015-01-0118

Page 25: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南配置 Amazon ES 域 (AWS 软件开发工具包)

aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.large.elasticsearch,InstanceCount=2,DedicatedMasterEnabled=false,ZoneAwarenessEnabled=true

但是,随着网络流量的增长和文档数量和大小的增加,您可能需要重新配置新的 Amazon ES 域。例如,您可以决定使用更大的实例类型、使用更多实例和启用专用主节点。以下示例对域配置进行以下更改:

aws es update-elasticsearch-domain-config --domain-name mylogs --elasticsearch-cluster-config InstanceType=m4.xlarge.elasticsearch,InstanceCount=3,DedicatedMasterEnabled=true,DedicatedMasterType=m4.large.elasticsearch,DedicatedMasterCount=3

配置 Amazon ES 域 (AWS 软件开发工具包)AWS 软件开发工具包 (除 Android 和 iOS 软件开发工具包之外) 支持在 Amazon ES 配置 API 参考 (p. 116)中定义的所有操作,包括 UpdateElasticsearchDomainConfig。有关安装和使用 AWS 软件开发工具包的更多信息,请参阅 AWS 软件开发工具包。

配置基于 EBS 的存储Amazon EBS 卷是一种数据块级存储设备,可以连接到单个实例。您可以使用 EBS 卷独立地从 Amazon ES域的计算资源扩展其存储资源。EBS 卷对包含大数据集但不需要大量计算资源的域非常有用。EBS 卷远大于实例提供的默认存储。Amazon Elasticsearch Service 支持以下 EBS 卷类型:

• 通用型 (SSD)• 预配置 IOPS (SSD)• 磁介质

Note

在将 EBS 卷类型从预配置 IOPS 更改为非预配置 EBS 卷类型时,请将 IOPS 值设为 0。

Warning

目前,如果附加到 EBS 卷的数据节点出现故障,则 EBS 卷也将失败。

配置基于 EBS 的存储 (控制台)使用以下步骤通过控制台启用基于 EBS 的存储。

启用基于 EBS 的存储 (控制台)

1. 转至 https://aws.amazon.com,然后选择 Sign In to the Console。2. 在 Analytics 下,选择 Elasticsearch Service。3. 在导航窗格中的 My domains 下,选择要配置的域。4. 选择 Configure cluster。5. 对于 Storage type,选择 EBS。6. 对于 EBS volume type,选择 EBS 卷类型。

如果您选择 Provisioned IOPS (SSD) 作为 EBS 卷类型,对于 Provisioned IOPS,键入您需要的基准IOPS 性能。

7. 对于 EBS volume size,键入您想要的 EBS 卷大小。

API 版本 2015-01-0119

Page 26: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南配置基于 EBS 的存储 (AWS CLI)

EBS volume size 是按节点计算的。您可使用以下公式计算 Amazon ES 域的群集总大小:(数据节点数)* (EBS 卷大小)。EBS 卷最小容量和最大容量取决于指定的 EBS 卷类型及其挂载到的实例类型。要了解更多信息,请参阅 EBS 卷大小限制 (p. 156)。

8. 选择 Submit。

Note

将预配置 IOPS EBS 卷的 IOPS 值设置为不超过该卷最大存储空间的 30 倍。例如,如果卷的最大容量为 100 GB,则您无法为其分配大于 3000 的 IOPS 值。

有关更多信息,请参阅 Amazon EC2 文档中的 Amazon EBS 卷。

配置基于 EBS 的存储 (AWS CLI)使用 --ebs-options 选项通过 AWS CLI 来配置基于 EBS 的存储。create-elasticsearch-domain和 update-elasticsearch-domain-config 命令使用以下语法。

语法

--ebs-options EBSEnabled=<value>,VolumeType=<value>,VolumeSize=<value>,IOPS=<value>

参数 有效值 说明

EBSEnabled true 或者 false 指定是否使用 EBS 卷作为存储,而不使用实例提供的存储空间。默认值为 false。

VolumeType 以下任一项:

• gp2 (通用型 SSD)• io1 (预配置 IOPS

SSD)• standard (磁介质)

要用于 Amazon ES 域的 EBS 卷类型。

VolumeSize 整数 指定每个数据节点的 EBS 卷的大小。EBS 卷最小容量和最大容量取决于指定的 EBS 卷类型及其挂载到的实例类型。要查看显示每种实例类型的最小和最大 EBS 容量的表格,请参阅服务限制。

IOPS 整数 指定 EBS 卷的基准 I/O 性能。此参数仅用于预配置 IOPS(SSD) 卷。最小值为 1000。最大值为 16000。

Note

我们建议您不要将预配置 IOPS EBS 卷的 IOPS 值设为超过该卷最大存储的 30 倍。例如,如果卷的最大容量为 100 GB,则您不应该为其分配大于 3000 的 IOPS 值。有关更多信息,包括每种卷类型的使用案例,请参阅 Amazon EC2 文档中的 Amazon EBS 卷类型。

示例

以下示例使用 Elasticsearch 版本 5.5 创建一个名为 mylogs 的域,其中包含一个 10 GB 的通用型 EBS 卷:

aws es create-elasticsearch-domain --domain-name=mylogs --elasticsearch-version 5.5 --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=10

API 版本 2015-01-0120

Page 27: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南配置基于 EBS 的存储 (AWS 软件开发工具包)

但是,随着搜索索引大小的增加,您可能需要更大的 EBS 卷。例如,您可以选择基准 I/O 性能为 3000 IOPS的 100 GB 预配置 IOPS 卷。以下示例对域配置进行以下更改:

aws es update-elasticsearch-domain-config --domain-name=mylogs --ebs-options EBSEnabled=true,VolumeType=io1,VolumeSize=100,IOPS=3000

配置基于 EBS 的存储 (AWS 软件开发工具包)AWS 开发工具包 (除 Android 和 iOS 软件开发工具包之外) 支持在 Amazon ES 配置 API 参考 (p. 116)中定义的所有操作,包括 UpdateElasticsearchDomainConfig 的 --ebs-options 参数。有关安装和使用AWS 软件开发工具包的更多信息,请参阅 AWS 软件开发工具包。

修改 VPC 访问配置如果将域配置为驻留在 VPC 中,则可以使用 Amazon ES 控制台修改配置。要将公共域迁移到 VPC 域, 请参阅 the section called “从公有访问迁移到 VPC 访问” (p. 93)。

配置 VPC 访问 (控制台)使用以下过程通过控制台配置 VPC 访问。

配置 VPC 访问 (控制台)

1. 转至 https://aws.amazon.com,然后选择 Sign In to the Console。2. 在 Analytics 下,选择 Elasticsearch Service。3. 在导航窗格中的 My domains 下,选择要配置的域。4. 选择 Configure cluster。5. 在 Network configuration 部分,对于 Subnets,选择一个子网。如果您启用了区域感知,则必须选择两

个子网。两个子网必须位于同一区域的不同可用区中。有关更多信息,请参阅 VPC 支持 (p. 88)。

Note

必须在子网中为网络接口预留足够的 IP 地址。有关更多信息,请参阅 the section called “在VPC 子网中预留 IP 地址” (p. 92)。

6. 对于 Security groups,请添加需要访问域的安全组。7. 选择 Submit。

配置访问策略Amazon Elasticsearch Service 提供了多种方式来配置您的 Amazon ES 域访问。有关更多信息,请参阅 访问控制 (p. 29)。

控制台提供了预配置的访问策略,您可以针对自己域的特定需求自定义这些策略。您也可以从其他 AmazonES 域导入访问策略。有关这些访问策略如何与 VPC 访问交互的信息,请参阅the section called “关于 VPC域的访问策略” (p. 90)。

配置访问策略 (控制台)使用以下步骤通过控制台配置访问策略。

API 版本 2015-01-0121

Page 28: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南配置访问策略 (AWS CLI)

配置访问策略 (控制台)

1. 转至 https://aws.amazon.com,然后选择 Sign In to the Console。2. 在 Analytics 下,选择 Elasticsearch Service。3. 在导航窗格中的 My domains 下,选择要更新的域。4. 选择 Modify access policy。5. 编辑访问策略。

或者,从 Select a template 下拉列表中选择一个策略模板,然后根据需要为您的域编辑该模板。

预配置访问策略 描述

允许或拒绝对一个或多个 AWS 账户或IAM 用户的访问

允许或拒绝对一个或多个 AWS 账户或 IAM 用户或角色的访问。

允许从特定 IP 访问域 此策略用于限制匿名访问特定的 IP 地址或 IP 地址范围。

Note

如果您为域启用了 VPC 访问,则此预配置策略不可用。但您可以使用安全组来控制哪些 IP 地址可以访问该域。要了解更多信息,请参阅“the sectioncalled “关于 VPC 域的访问策略” (p. 90)”。

拒绝访问域 此策略只允许通过 Amazon ES 控制台访问,或由创建该域的 AWS 账户的所有者访问。

从另一个域复制访问策略 此模板提供了一种简便的方法来从另一个域导入现有的访问策略。

允许对域进行公开访问 不建议将此策略用于具有公有终端节点的域。它允许任何人删除、修改或访问域中的索引。此策略仅为方便测试而创建。请不要将敏感数据加载到使用这些设置的域。

6. 选择 Submit。

配置访问策略 (AWS CLI)使用 --access-policies 选项通过 AWS CLI 来配置访问策略。create-elasticsearch-domain 和update-elasticsearch-domain-config 命令使用以下语法。

语法

--access-policies=<value>

参数 有效值 说明

--access-policies

JSON 指定 Amazon ES 域的访问策略。

示例

以下基于资源的策略示例只允许在 Principal 策略元素中通过以 AWS 账户 ID (如 555555555555) 标识的单个用户访问该服务。此用户接收对 index1 的访问权限,但不能访问域中的其他索引:

API 版本 2015-01-0122

Page 29: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南配置访问策略 (AWS 软件开发工具包)

aws es update-elasticsearch-domain-config --domain-name mylogs --access-policies '{"Version": "2012-10-17", "Statement": [ { "Effect": "Allow","Principal": {"AWS": "arn:aws:iam::123456789012:root" },"Action":"es:*","Resource":"arn:aws:es:us-east-1:555555555555:domain/index1/*" } ] }'

Tip

如果您使用 AWS CLI 配置访问策略,您可以使用许多在线工具之一缩小 JSON 策略语句。

配置访问策略 (AWS 软件开发工具包)AWS 开发工具包 (除 Android 和 iOS 软件开发工具包之外) 支持在 Amazon ES 配置 API 参考 (p. 116)中定义的所有操作,包括 UpdateElasticsearchDomainConfig 的 --access-policies 参数。有关安装和使用 AWS 软件开发工具包的更多信息,请参阅 AWS 软件开发工具包。

配置自动快照Amazon Elasticsearch Service 自动创建一个域的主索引分片的每日快照并提供副本分片数量。默认情况下,该服务在午夜自动创建快照,不过您可以选择在服务负载最小的时候进行。

有关使用这些快照的信息,请参阅the section called “还原快照” (p. 72)。

Warning

该服务在群集的运行状况为红色时将停止创建 Amazon ES 索引的快照。群集因缺乏这种备份而发生故障时,您添加到红色群集 (甚至添加到运行状况为绿色的索引) 的任何文档都可能会丢失。为防止数据丢失,请等待群集的运行状况恢复绿色,然后再将其他数据上传到群集中的任何索引。

配置快照 (控制台)使用以下步骤通过控制台配置每日自动索引快照。

配置自动快照

1. 转至 https://aws.amazon.com,然后选择 Sign In to the Console。2. 在 Analytics 下,选择 Elasticsearch Service。3. 在导航窗格中的 My domains 下,选择要更新的域。4. 选择 Configure cluster。5. 对于 Automated snapshot start hour,选择该服务创建自动快照的新时间。6. 选择 Submit。

配置快照 (AWS CLI)--snapshot-options 选项使用以下语法。该选项的语法与 create-elasticsearch-domain 和update-elasticsearch-domain-config 命令相同。

语法

--snapshot-options AutomatedSnapshotStartHour=<value>

API 版本 2015-01-0123

Page 30: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南配置快照 (AWS 软件开发工具包)

参数 有效值 说明

AutomatedSnapshotStartHour 介于 0 到 23 之间的整数

指定该服务为新域中的索引创建每日自动快照的 UTC 时间。默认值为 0 (即午夜),这意味着快照将在午夜到凌晨 1 点之间的任意时间创建。

示例

以下示例在 UTC 凌晨 1 点配置自动快照:

aws es update-elasticsearch-domain-config --domain-name mylogs --region us-east-2 --snapshot-options AutomatedSnapshotStartHour=1

配置快照 (AWS 软件开发工具包)AWS 软件开发工具包 (除 Android 和 iOS 软件开发工具包之外) 支持在 Amazon ES 配置 API 参考 (p. 116)中定义的所有操作。这包括 UpdateElasticsearchDomainConfig 的 --snapshots-options 参数。有关安装和使用 AWS 软件开发工具包的更多信息,请参阅 AWS 软件开发工具包。

配置高级选项使用高级选项来配置以下内容:

rest.action.multi.allow_explicit

指定是否允许在 HTTP 请求正文中显式引用索引。将此属性设置为“false”可防止用户绕过子资源的访问控制。默认情况下,此值为 true。有关更多信息,请参阅基于 URL 的访问控制和the section called “高级选项和 API 注意事项” (p. 37)。

indices.fielddata.cache.size

指定分配到字段数据的 Java 堆空间的百分比。默认情况下,此设置是无界的。Note

许多客户查询轮换每日索引。我们建议您在大多数此类情况中将indices.fielddata.cache.size 配置为 JVM 堆的 40% 来开始基准测试。但是,如果您有非常大的索引,您可能需要大型字段数据缓存。

indices.query.bool.max_clause_count

指定 Lucene 布尔查询中允许的子句的最大数量。默认值为 1024。如果查询具有的子句数超过了允许的子句数,则会导致 TooManyClauses 错误。有关更多信息,请参阅 Lucene 文档。

配置高级选项 (控制台)配置高级选项 (控制台)

1. 转至 https://aws.amazon.com,然后选择 Sign In to the Console。2. 在 Analytics 下,选择 Elasticsearch Service。3. 在导航窗格中的 My domains 下,选择要更新的域。4. 选择 Configure cluster。5. 选择 Advanced options。

API 版本 2015-01-0124

Page 31: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南配置高级选项 (AWS CLI)

6. 指定您所需的选项,然后选择提交。

配置高级选项 (AWS CLI)--advanced-options 选项使用以下语法。该选项的语法与 create-elasticsearch-domain 和update-elasticsearch-domain-config 命令相同。

语法

--advanced-options rest.action.multi.allow_explicit=<true|false>, indices.fielddata.cache.size=<percentage_heap>, indices.query.bool.max_clause_count=<int>

参数 有效值

rest.action.multi.allow_explicit=<true|false>

indices.fielddata.cache.size=<percentage_heap>

--advanced-options

indices.query.bool.max_clause_count=<int>

示例

以下示例禁止在 HTTP 请求的正文中显式引用索引。它还会将字段数据缓存限制在总 Java 堆的 40%:

aws es update-elasticsearch-domain-config --domain-name mylogs --region us-east-1 --advanced-options rest.action.multi.allow_explicit_index=false, indices.fielddata.cache.size=40

配置高级选项 (AWS 软件开发工具包)AWS 开发工具包 (除 Android 和 iOS 软件开发工具包之外) 支持在 Amazon ES 配置 API 参考 (p. 116)中定义的所有操作,包括 UpdateElasticsearchDomainConfig 的 --advanced-options 参数。有关安装和使用 AWS 软件开发工具包的更多信息,请参阅 AWS 软件开发工具包。

配置慢速日志慢速日志是 Amazon ES 在 Amazon CloudWatch Logs 中公开的一种 Elasticsearch 功能。这些日志有助于排查性能问题,但默认情况下处于禁用 状态。如果启用,则应用标准 CloudWatch 定价。

Amazon ES 公开两个慢速日志:搜索和索引。要了解有关这些日志的更多信息,请参阅 Elasticsearch 文档中的慢速日志。

启用慢速日志发布 (控制台)使用以下过程可启用到 CloudWatch 的慢速日志发布。

启用到 CloudWatch 的慢速日志发布

1. 转至 https://aws.amazon.com,然后选择 Sign In to the Console。2. 在 Analytics 下,选择 Elasticsearch Service。3. 在导航窗格中的 My domains 下,选择要更新的域。4. 在 Logs 选项卡上,为所需日志选择 Enable。

API 版本 2015-01-0125

Page 32: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南启用慢速日志发布 (AWS CLI)

5. 创建一个 CloudWatch 日志组或选择一个现有日志组。Note

如果要启用搜索和 索引慢速日志,建议将它们发布到相应的日志组。这样分开更便于进行日志扫描。

6. 选择一个包含适当权限的访问策略,或使用控制台提供的 JSON 创建策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": "cw_log_group_arn" } ]}

Important

CloudWatch Logs 支持每个区域 10 个资源策略。如果您计划针对若干 Amazon ES 域启用慢速日志,应创建并重用包含多个日志组的更宽泛的策略,以避免达到此限制。

7. 选择 Enable。

您的域状态将从 Active 更改为 Processing。在启用日志发布之前,必须重新回到活动状态。这一过程耗时最多 30 分钟。

启用日志发布之后,请参阅the section called “设置 Elasticsearch 日志记录阈值” (p. 27)。

启用慢速日志发布 (AWS CLI)您需要有一个 CloudWatch 日志组,才能启用日志发布。如果还没有日志组,可以使用以下命令创建一个:

aws logs create-log-group --log-group-name my-log-group

键入下一命令查找日志组的 ARN,然后将它记下来:

aws logs describe-log-groups --log-group-name my-log-group

现在,可以为 Amazon ES 授予日志组写入权限。您必须在命令结尾处提供日志组的 ARN:

aws logs put-resource-policy --policy-name my-policy --policy-document '{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com"}, "Action":[ "logs:PutLogEvents"," logs:PutLogEventsBatch","logs:CreateLogStream"],"Resource": "cw_log_group_arn"}]}'

Important

CloudWatch Logs 支持每个区域 10 个资源策略。如果您计划针对若干 Amazon ES 域启用慢速日志,应创建并重用包含多个日志组的更宽泛的策略,以避免达到此限制。

API 版本 2015-01-0126

Page 33: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南启用慢速日志发布 (AWS 软件开发工具包)

最后,可以使用 --log-publishing-options 选项来启用发布。该选项的语法与 create-elasticsearch-domain 和 update-elasticsearch-domain-config 命令相同。

参数 有效值

SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}

--log-publishing-options

INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}

Note

如果要启用搜索和 索引慢速日志,建议将它们发布到相应的日志组。这样分开更便于进行日志扫描。

示例

下面的示例对指定域启用搜索和索引慢速日志的发布:

aws es update-elasticsearch-domain-config --domain-name my-domain --log-publishing-options "SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-log-group,Enabled=true},INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-other-log-group,Enabled=true}"

要禁用到 CloudWatch 的发布,请在该命令中使用 Enabled=false。

启用日志发布之后,请参阅the section called “设置 Elasticsearch 日志记录阈值” (p. 27)。

启用慢速日志发布 (AWS 软件开发工具包)您必须先创建一个 CloudWatch 日志组,获取其 ARN,并为 Amazon ES 授予日志组写入权限,然后才能启用慢速日志发布。Amazon CloudWatch Logs API Reference 介绍了相关操作:

• CreateLogGroup

• DescribeLogGroup

• PutResourcePolicy

您可以使用 AWS 软件开发工具包访问这些操作。

AWS 软件开发工具包 (除 Android 和 iOS 软件开发工具包之外) 支持在 Amazon ES 配置 API 参考 (p. 116)中定义的所有操作,包括 CreateElasticsearchDomain 和UpdateElasticsearchDomainConfig 的 --log-publishing-options 选项。

启用日志发布之后,请参阅the section called “设置 Elasticsearch 日志记录阈值” (p. 27)。

设置 Elasticsearch 日志记录阈值默认情况下,Elasticsearch 禁用慢速日志。在启用到 CloudWatch 的慢速日志发布 后,仍必须为每个Elasticsearch 索引指定日志记录阈值。这些阈值精确定义应在哪个日志级别记录哪些内容。各 Elasticsearch版本的设置稍有不同。有关每个版本的摘要,请参阅 Elasticsearch 文档中的慢速日志。

您可以通过 Elasticsearch REST API 指定这些设置。下面是一个示例:

API 版本 2015-01-0127

Page 34: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南查看慢速日志

curl -XPUT elasticsearch_domain_endpoint/index/_settings --data '{"index.search.slowlog.threshold.query.warn": "5s","index.search.slowlog.threshold.query.info": "2s"}' -H 'Content-Type: application/json'

要测试慢速日志是否发布成功,请考虑从非常值开始验证日志是否出现在 CloudWatch 中,然后将阈值增大到更有用的级别。

如果日志没有显示,请检查以下内容:

• CloudWatch 日志组是否存在?检查 CloudWatch 控制台。• Amazon ES 是否有日志组写入权限?检查 Amazon ES 控制台。• Amazon ES 域是否已配置为发布到该日志组?检查 Amazon ES 控制台,使用 AWS CLIdescribe-elasticsearch-domain-config 选项,或者使用某个软件开发工具包调用DescribeElasticsearchDomainConfig。

• Elasticsearch 日志记录阈值是否足够低,让您的请求超过这些阈值?要查看索引阈值,请使用以下命令:

curl -XGET elasticsearch_domain_endpoint/index/_settings?pretty

如果要禁用索引的慢速日志,请将您更改的任何阈值恢复为其默认值 -1。

使用 Amazon ES 控制台或 AWS CLI 禁用到 CloudWatch 的发布不会 阻止 Elasticsearch 生成日志,只会停止发布 这些日志。请务必检查索引设置,确定是否还需要这些慢速日志。

查看慢速日志在 CloudWatch 中查看慢速日志,方法和其他任何 CloudWatch 日志一样。有关更多信息,请参阅 AmazonCloudWatch Logs User Guide 中的查看日志数据。

下面是查看日志时的一些注意事项:

• Amazon ES 仅将慢速日志每一行中前 255000 个字符发布到 CloudWatch。其余任何内容都将被截断。• 在 CloudWatch 中,日志流名称包含后缀 -index-slow-logs 或 -search-slow-logs,用以帮助标识

其内容。

API 版本 2015-01-0128

Page 35: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南策略的类型

Amazon Elasticsearch Service 访问控制

Amazon Elasticsearch Service 提供了多种方式来控制对您的域的访问。本部分介绍了各种策略类型,其彼此交互的方式,以及如何创建您自己的自定义策略。

Important

VPC 支持为 Amazon ES 访问控制引入了一些其他注意事项。有关更多信息,请参阅 the sectioncalled “关于 VPC 域的访问策略” (p. 90)。

策略的类型Amazon ES 支持三种类型的访问策略:

• the section called “基于资源的策略” (p. 29)• the section called “基于身份的策略” (p. 31)• the section called “基于 IP 的策略” (p. 31)

基于资源的策略您将基于资源的策略附加到域。这些策略指定委托人可以对域的子资源执行哪些操作。子资源包括Elasticsearch 索引和 API。

Principal 元素指定账户、用户或允许访问的角色。Resource 元素指定这些委托人可以访问哪些子资源。以下基于资源的策略将授予 test-user 对 test-domain 资源的完全访问权限 (es:*)。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/test-user" ] }, "Action": [ "es:*" ], "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/*" } ]}

两个重要注意事项适用于此策略:

• 这些权限仅适用于此域。除非您创建其他策略,否则 test-user 无法访问其他域或在 Amazon ES 控制面板中查看其列表。

• Resource 元素中尾随的 /* 非常重要。尽管拥有完全访问权限,test-user 仍然只可以对域的子资源(而不能对域的配置) 执行这些操作。

API 版本 2015-01-0129

Page 36: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南基于资源的策略

例如,test-user 可以向索引 (GET https://search-test-domain.us-west-1.es.amazonaws.com/test-index) 发送请求,但不可以更新域的配置 (POST https://es.us-west-1.amazonaws.com/2015-01-01/es/domain/test-domain/config)。注意两个终端节点之间的差异。访问配置 API (p. 116) 需要一个基于身份的策略 (p. 31)。

要进一步限制 test-user,您可以应用以下策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/test-user" ] }, "Action": [ "es:ESHttpGet" ], "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/test-index/_search" } ]}

现在,test-user 只能执行一个操作:搜索 test-index。域中的所有其他索引均不可访问,且如果没有使用 es:ESHttpPut 操作或 es:ESHttpPost 操作的权限,test-user 将无法添加或修改文档。

接下来,您可以决定为高级用户配置角色。此策略允许 power-user-role 访问所有 HTTP 方法,但不能删除关键索引及其文档:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/power-user-role" ] }, "Action": [ "es:ESHttpDelete", "es:ESHttpGet", "es:ESHttpHead", "es:ESHttpPost", "es:ESHttpPut" ], "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/*" }, { "Effect": "Deny", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/power-user-role" ] }, "Action": [ "es:ESHttpDelete" ], "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/critical-index*"

API 版本 2015-01-0130

Page 37: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南基于身份的策略

} ]}

有关所有可用操作的信息,请参阅the section called “策略元素参考” (p. 33)。

基于身份的策略与基于资源的策略 (附加到 Amazon ES 中的域) 不同,您使用 AWS Identity and Access Management (IAM)服务将基于身份的策略附加到用户或角色。和基于资源的策略 (p. 29)一样,基于身份的策略指定谁可以访问服务,他们可以执行哪些操作,以及他们可以对哪些资源执行这些操作 (如果适用)。

虽然不一定,但基于身份的策略往往更通用。它们通常管理用户可以执行的基本、服务级别的操作。您准备好这些策略后,可以在 Amazon ES 中使用基于资源的策略为用户提供其他权限。

由于基于身份的策略附加到用户或角色 (委托人),JSON 不会指定委托人。以下策略授予对以 Describe 和List 开头的操作的访问权限,且允许对所有域发送 GET 请求。这一操作组合提供只读访问:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "es:Describe*", "es:List*", "es:ESHttpGet" ], "Effect": "Allow", "Resource": "*" } ]}

管理员可能具有对 Amazon ES 的完全访问权限:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "es:*" ], "Effect": "Allow", "Resource": "*" } ]}

有关基于资源的策略和基于身份的策略之间的差异的更多信息,请参阅 IAM 用户指南 中的 IAM 策略。Note

具有 AWS 托管的 AmazonESReadOnlyAccess 策略的用户无法查看控制台中的群集运行状况。要允许它们查看群集运行状况,请向访问策略添加 "es:ESHttpGet" 操作并将该操作附加到其账户或角色。

基于 IP 的策略基于 IP 的策略将对域的访问限制在一个或多个 IP 地址或 CIDR 块。从技术上讲,基于 IP 的策略不是一种不同类型的策略。相反,它们仅仅是指定匿名委托人的基于资源的策略,且包含一个特殊的 Condition 元素。

API 版本 2015-01-0131

Page 38: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南签署 Amazon ES 请求

基于 IP 的策略的主要吸引力在于,它们允许对 Amazon ES 域发送未签名请求,这可让您使用 curl 和 thesection called “Kibana” (p. 76) 等客户端或通过代理服务器访问域。要了解更多信息,请参阅“the sectioncalled “使用代理从 Kibana 访问 Amazon ES” (p. 76)”。

Note

如果您为您的域启用了 VPC 访问,则无法配置基于 IP 的策略。但您可以使用安全组来控制哪些 IP 地址可以访问该域。有关更多信息,请参阅 the section called “关于 VPC 域的访问策略” (p. 90)。

以下基于 IP 的访问策略向源自 12.345.678.901 的所有请求授予对 test-domain 的访问权限:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "es:*" ], "Condition": { "IpAddress": { "aws:SourceIp": [ "12.345.678.901" ] } }, "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/*" } ]}

签署 Amazon ES 请求即使您配置完全开放的基于资源的访问策略,对 Amazon ES 配置 API 的所有 请求都必须经过签名。如果您的策略指定 IAM 用户或角色,则对 Elasticsearch API 的请求也必须经过签名。签名方法因 API 而异:

• 要调用 Amazon ES 配置 API,我们建议您使用一个 AWS 开发工具包。与创建和签署您自己的请求相比,开发工具包可大大简化流程,从而为您节省大量时间。

• 要调用 Elasticsearch API,您必须签署您自己的请求。有关示例代码,请参阅 the section called “编程索引” (p. 55)。

要对请求进行签名,您需要使用加密哈希函数计算出数字签名,此函数可根据输入返回一个哈希值。输入内容包括您的请求文本和秘密访问密钥。哈希函数返回哈希值,您将该值包含在请求中,作为签名。该签名是您的请求的 Authorization 标头的一部分。

在收到您的请求后,Amazon ES 将使用用于对该请求进行签名的同一哈希函数和输入重新计算签名。如果所得签名与该请求中的签名匹配,Amazon ES 将处理该请求。否则,Amazon ES 将拒绝请求。

Amazon ES 支持使用 AWS 签名版本 4 进行身份验证。有关详细信息,请参见 Signature Version 4 SigningProcess。

Note

对于用签名版本 4 签署的 HTTP POST 请求,服务会忽略在 URL 中传入的参数。

API 版本 2015-01-0132

Page 39: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南当策略发生冲突时

当策略发生冲突时当策略不一致或没有明确提到某个用户时,复杂性将提高。IAM 用户指南 中的了解 IAM 的工作方式提供了策略评估逻辑的简明摘要:

• 默认情况下,所有请求都将被拒绝。• 显式允许将取代此默认设置。• 显式拒绝将覆盖任何允许。

例如,如果某个基于资源的策略向您授予访问某个域的权限,但一个基于身份的策略拒绝您访问,则您将被拒绝方案。如果某个基于身份的策略授予访问权限,基于资源的策略不指定您是否应具有访问权限,则您将被允许访问。请参阅以下交叉策略表,了解结果的完整摘要。

  在基于资源的策略中允许

在基于资源的策略中拒绝

在基于资源的策略中既不允许也不拒绝

在基于身份的策略中允许

允许 Deny 允许

在基于身份的策略中拒绝

Deny Deny Deny

在基于身份的策略中既不允许也不拒绝

允许 Deny Deny

策略元素参考Amazon ES 支持 IAM 策略元素参考中记录的所有策略元素。下表显示了最常用的元素。

JSON 策略元素 摘要

Version 当前版本的策略语言为 2012-10-17。所有访问策略均应指定该值。

Effect 此元素指定该语句是允许还是拒绝对特定操作的访问。有效值为 Allow 或Deny。

Principal 此元素指定被允许或拒绝访问资源的 AWS 账户或 IAM 用户或角色,可采用多种形式:

• AWS 账户:"Principal":{"AWS": ["123456789012"]} 或"Principal":{"AWS": ["arn:aws:iam::123456789012:root"]}

• IAM 用户: "Principal":{"AWS":["arn:aws:iam::123456789012:user/test-user"]}

• IAM 角色: "Principal":{"AWS":["arn:aws:iam::123456789012:role/test-role"]}

指定 * 通配符支持匿名访问域,我们不建议这样做,除非您添加一个基于 IP 的条件。

Action Amazon ES 使用 HTTP 方法的以下操作:

• es:ESHttpDelete

API 版本 2015-01-0133

Page 40: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南策略元素参考

JSON 策略元素 摘要• es:ESHttpGet

• es:ESHttpHead

• es:ESHttpPost

• es:ESHttpPut

Amazon ES 使用配置 API (p. 116) 的以下操作:

• es:AddTags

• es:CreateElasticsearchDomain

• es:DeleteElasticsearchDomain

• es:DeleteElasticsearchServiceRole

• es:DescribeElasticsearchDomain

• es:DescribeElasticsearchDomainConfig

• es:DescribeElasticsearchDomains

• es:DescribeElasticsearchInstanceTypeLimits

• es:ListDomainNames

• es:ListElasticsearchInstanceTypes

• es:ListElasticsearchVersions

• es:ListTags

• es:RemoveTags

• es:UpdateElasticsearchDomainConfig

Tip

您可以使用通配符来指定一部分操作,如 "Action":"es:*" 或"Action":"es:Describe*"。

某些 es: 操作支持资源级权限。例如,您可以向用户授予删除一个特定域的权限,而无需向该用户授予删除任何 域的权限。其他操作仅适用于服务本身。例如,es:ListDomainNames 在单个域范围内没有意义,因此需要一个通配符。

Important

基于资源 的策略与资源级 权限不同。基于资源的策略 (p. 29)是附加到域的完整 JSON 策略。资源级权限可让您将操作限制于特定域或子资源。在实际工作中,您可以将资源级权限视为基于资源的策略或基于身份的策略的可选部分。

以下基于身份的策略 (p. 31)将列出所有 es: 操作并按照它们是适用于域子资源 (test-domain/*)、适用于域配置 (test-domain) 还是仅适用于服务(*) 对其进行分组:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "es:ESHttpDelete", "es:ESHttpGet", "es:ESHttpHead",

API 版本 2015-01-0134

Page 41: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南策略元素参考

JSON 策略元素 摘要 "es:ESHttpPost", "es:ESHttpPut" ], "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/*" }, { "Effect": "Allow", "Action": [ "es:CreateElasticsearchDomain", "es:DeleteElasticsearchDomain", "es:DescribeElasticsearchDomain", "es:DescribeElasticsearchDomainConfig", "es:DescribeElasticsearchDomains", "es:UpdateElasticsearchDomainConfig" ], "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain" }, { "Effect": "Allow", "Action": [ "es:AddTags", "es:DeleteElasticsearchServiceRole", "es:DescribeElasticsearchInstanceTypeLimits", "es:ListDomainNames", "es:ListElasticsearchInstanceTypes", "es:ListElasticsearchVersions", "es:ListTags", "es:RemoveTags" ], "Resource": "*" } ]}

Note

虽然 es:CreateElasticsearchDomain 的资源级权限可能看起来不直观 (毕竟,为什么要向用户授予创建已存在的域的权限?),但通配符的使用可让您强制实施一个简单的域命名架构,例如 "Resource": "arn:aws:es:us-west-1:987654321098:domain/my-team-name-*"。

当然,您完全可以在限制性较低的资源元素旁包括如下操作:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "es:ESHttpGet", "es:DescribeElasticsearchDomain" ], "Resource": "*" } ]}

API 版本 2015-01-0135

Page 42: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南策略元素参考

JSON 策略元素 摘要要了解有关配对操作和资源的更多信息,请参阅此表中的 Resource 元素。

Condition Amazon ES 支持 IAM 用户指南 的可用的全局条件键中所述的全部情况。

配置基于 IP 的策略时 (p. 31),您指定 IP 地址或 CIDR 块作为条件,如下所示:

"Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/32" ] }}

API 版本 2015-01-0136

Page 43: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南高级选项和 API 注意事项

JSON 策略元素 摘要

Resource Amazon ES 以三种基本方式使用 Resource 元素:

• 对于应用于 Amazon ES 本身的操作 (如 es:ListDomainNames),或若要允许完整访问权限,请使用以下语法:

"Resource": "*"

• 对于涉及域的配置的操作 (例如 es:DescribeElasticsearchDomain),您可以使用以下语法:

"Resource": "arn:aws:es:region:aws-account-id:domain/domain-name"

• 对于应用于域的子资源的操作 (例如 es:ESHttpGet),您可以使用以下语法:

"Resource": "arn:aws:es:region:aws-account-id:domain/domain-name/*"

您不一定要使用通配符。Amazon ES 可让您为每个 Elasticsearch 索引或API 定义不同的访问策略。例如,您可以限制用户对 test-index 索引的权限:

"Resource": "arn:aws:es:region:aws-account-id:domain/domain-name/test-index"

与对 test-index 的完全访问权限相比,您可能更愿意将策略限制在仅search API。

"Resource": "arn:aws:es:region:aws-account-id:domain/domain-name/test-index/_search"

您甚至可以控制对单个文档的访问:

"Resource": "arn:aws:es:region:aws-account-id:domain/domain-name/test-index/test-type/1"

基本上,如果 Elasticsearch 将子资源表示为一个终端节点,则您可以控制对其进行的访问。

有关哪些操作支持资源级权限的详细信息,请参阅此表中的 Action 元素。

高级选项和 API 注意事项Amazon ES 有多个高级选项,其中一个有访问控制影响:rest.action.multi.allow_explicit_index。在其默认设置为 true 时,它允许用户在某些情况下绕过子资源权限。

例如,请考虑以下基于资源的策略:

{

API 版本 2015-01-0137

Page 44: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南高级选项和 API 注意事项

"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/test-user" ] }, "Action": [ "es:ESHttp*" ], "Resource": [ "arn:aws:es:us-west-1:987654321098:domain/test-domain/test-index/*", "arn:aws:es:us-west-1:987654321098:domain/test-domain/_bulk" ] }, { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/test-user" ] }, "Action": [ "es:ESHttpGet" ], "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/restricted-index/*" } ]}

此策略向 test-user 授予对 test-index 和 Elasticsearch 批量 API 的完全访问权限。它还允许对restricted-index 发送 GET 请求。

正如您可能预料的,以下索引请求将因权限错误而失败:

PUT https://search-test-domain.us-west-1.es.amazonaws.com/restricted-index/movie/1{ "title": "Your Name", "director": "Makoto Shinkai", "year": "2016"}

与索引 API 不同,批量 API 可让您在一次调用中创建、更新和删除许多文档。但是,您通常在请求正文中指定这些操作,而不是在请求 URL 中。由于 Amazon ES 使用 URL 控制对域子资源的访问,事实上,test-user 可以使用批量 API 对 restricted-index 进行更改。即使该用户缺乏对索引的 POST 权限,以下请求也将成功:

POST https://search-test-domain.us-west-1.es.amazonaws.com/_bulk{ "index" : { "_index": "restricted-index", "_type" : "movie", "_id" : "1" } }{ "title": "Your Name", "director": "Makoto Shinkai", "year": "2016" }

在这种情况下,访问策略无法实现其意图。要防止用户绕过这些类型的限制,您可以将rest.action.multi.allow_explicit_index 更改为 false。如果此值为 false,则对批量、mget 和msearch API 的所有在请求正文中指定索引名称的调用都将停止工作。换句话说,对 _bulk 的调用不再有效,但对 test-index/_bulk 的调用仍然有效。这第二个终端节点包含一个索引名称,因此您无需在请求正文中指定一个索引名称。

Kibana (p. 76) 高度依赖于 mget 和 msearch,因此它不太可能在此更改后正常工作。若要进行部分补救,您可以将 rest.action.multi.allow_explicit 保留为 true 或拒绝特定用户访问这些 API 中的一个或多个。

API 版本 2015-01-0138

Page 45: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南配置访问策略

有关更改此设置的信息,请参阅the section called “配置高级选项” (p. 24)。

同样,以下基于资源的策略包含两个小问题:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/test-user" }, "Action": "es:ESHttp*", "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/*" }, { "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:user/test-user" }, "Action": "es:*", "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/restricted-index/*" } ]}

• 即使显式拒绝,test-user 仍然可以进行 GET https://search-test-domain.us-west-1.es.amazonaws.com/_all/_search 和 GET https://search-test-domain.us-west-1.es.amazonaws.com/*/_search 等调用,以访问 restricted-index 中的文档。

• 由于 Resource 元素引用 restricted-index/*,test-user 无权直接访问索引的文档。但是,该用户有权删除整个索引。要防止访问和删除,策略必须改为指定 restricted-index*。

与混合广泛的允许和集中的拒绝相比,最安全的方法是遵循最小特权原则,仅授予执行任务所需的权限。

配置访问策略• 有关在 Amazon ES 中创建或修改基于资源和基于 IP 的策略的说明,请参阅the section called “配置访问

策略 ” (p. 21)。• 有关在 IAM 中创建或修改基于身份的策略的说明,请参阅 IAM 用户指南 中的创建 IAM 策略。

其他示例策略虽然本章包含许多示例策略,但 AWS 访问控制是一个复杂的主题,最好是通过示例理解。有关更多信息,请参阅 IAM 用户指南 中的示例策略。

API 版本 2015-01-0139

Page 46: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南关于配置更改

管理 Amazon Elasticsearch Service域

随着 Amazon Elasticsearch Service (Amazon ES) 域中文档大小和数量的增长以及网络流量的增加,您可能需要更新 Elasticsearch 群集的配置。要了解何时重新配置您的域,您需要监控域指标。您可能还需要审核对您的域的数据相关 API 调用或将标签分配给您的域。本部分介绍如何执行与域管理相关的各种任务。

主题• 关于配置更改 (p. 40)• 配置更改的费用 (p. 41)• 启用区域感知 (控制台) (p. 41)• 使用 Amazon CloudWatch 监控群集指标和统计数据 (控制台) (p. 42)• 使用 AWS CloudTrail 审核 Amazon Elasticsearch Service 域 (p. 49)• 标记 Amazon Elasticsearch Service 域 (p. 51)

关于配置更改Amazon ES 在更新域时使用蓝/绿 部署过程。蓝/绿通常是指运行两个生产环境 (一个活动环境和一个空闲环境) 并在您进行软件更改时切换这两个环境的做法。对于 Amazon ES,它是指创建用于域更新的新环境并在这些更新完成后将用户路由至新环境的实践。此实践可在部署到新环境未成功的情况下最大程度地减少停机时间并维护原始环境。

当您进行大多数配置更改时,会发生域更新,但也会在 Amazon ES 团队对该服务进行特定软件更改时发生域更新。如果您进行配置更改,则该域状态将更改为 Processing。如果 Amazon ES 团队进行软件更改,则状态将保持 Active。在这两种情况下,您可以查看群集运行状况和 Amazon CloudWatch 指标,并会在进行域更新时发现群集中的节点数暂时加倍。在下图中,您可以看到配置更改期间的节点从 11 个翻倍至 22 个,然后在更新完成后返回至 11 个。

这种临时的翻倍可能会对群集的专用主节点 (p. 83)造成压力,而要管理的节点数突增至两倍。在专用主节点上保持充足的容量很重要,这有助于处理与这些蓝/绿部署相关的开销。

Important

在配置更改和服务维护期间,您不会 产生任何额外费用。您只需要为您的群集请求的节点数量付费。有关具体信息,请参阅the section called “配置更改的费用” (p. 41)。

为防止专用主节点过载,您可以使用 Amazon CloudWatch 指标监控使用情况 (p. 42)。有关推荐的最大值,请参阅the section called “建议的 CloudWatch 警报” (p. 85)。

API 版本 2015-01-0140

Page 47: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南配置更改的费用

配置更改的费用如果您更改了某个域的配置,Amazon ES 将创建一个新群集,如the section called “关于配置更改” (p. 40)中所述。在从旧群集迁移到新群集时,会产生以下费用:

• 如果您更改实例类型,第一个小时两个群集都会收费。第一个小时后,您只需为新群集付费。

示例:您将配置从三个 m3.xlarge 实例更改为四个 m4.large 实例。在第一个小时中,两个群集都需要收费 (3 个 m3.xlarge + 4 个 m4.large)。第一个小时后,您只需为新群集付费 (4 个 m4.large)。

• 如果您未更改实例类型,第一个小时您只需要为最大的群集付费。第一个小时后,您只需为新群集付费。

示例: 您将配置从六个 m3.xlarge 实例更改为三个 m3.xlarge 实例。在第一个小时,您只需要为最大的群集付费 (6 个 m3.xlarge)。第一个小时后,您只需为新群集付费 (3 个 m3.xlarge)。

启用区域感知 (控制台)每个 AWS 区域都是一个独立的地理区域,其中包含多个相互隔离的位置,这些位置称为可用区。为避免数据损失,并最大限度地减少节点和数据中心故障时导致的停机时间,您可以使用 Amazon ES 控制台,在同一区域的两个可用区之间,分配属于 Elasticsearch 群集的节点和副本索引分片。此分配称为区域感知。如果启用区域感知,则您还必须使用本机 Elasticsearch API 为您的群集创建副本分片。Amazon ES 在可用区的各节点之间分配副本,这会增加您的群集的可用性。为群集启用区域感知会略微增加网络延迟。

Important

区域感知要求实例数量为偶数。所有索引的默认配置均为副本数量等于 1。如果您为一个索引指定副本数量等于 0,则区域感知不复制分片到第二个可用区。如果没有副本分片,则无需将副本分发到第二个可用区,启用该功能不提供数据损失保护。

如果您启用区域感知并使用 VPC 终端节点连接到您的域,则必须指定域的可用区。一些实例类型可能在一些可用区中不可用。有关使用 VPC 终端节点的更多信息,请参阅 Amazon ES 域的 VPC 和 VPC 终端节点 (p. 88)。

下图显示了启用区域感知的四节点群集。该服务将所有主索引分片放在一个可用区中,将所有副本分片放在第二个可用区中。

API 版本 2015-01-0141

Page 48: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南使用 Amazon CloudWatch 监控群集指标和统计数据 (控制台)

启用区域感知 (控制台)

1. 转至 https://aws.amazon.com,然后选择 Sign In to the Console。2. 在 Analytics 下,选择 Elasticsearch Service。3. 在导航窗格的 My domains 下,选择您的 Amazon ES 域。4. 选择 Configure cluster。5. 在 Node configuration 窗格中,选择 Enable zone awareness。6. 选择 Submit。

有关更多信息,请参阅 EC2 文档中的区域和可用区。

使用 Amazon CloudWatch 监控群集指标和统计数据(控制台)

Amazon ES 域每分钟向 Amazon CloudWatch 发送一次性能指标。如果您使用通用型 EBS 卷或磁性 EBS卷,则 EBS 卷指标将仅每五分钟更新一次。使用 Amazon Elasticsearch Service 控制台中的监控选项卡查看这些指标,它们无任何附加费用。

统计数据帮助您更深入地了解每个指标。例如,查看 CPUUtilization 指标的 Average 统计数据,以计算群集中所有节点的平均 CPU 利用率。每个指标都属于以下三种类别之一:

• 群集指标 (p. 43)• 专用主节点指标 (p. 46)

API 版本 2015-01-0142

Page 49: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南群集指标

• EBS 卷指标 (p. 47)

Note

该服务会将指标存档两周,然后再丢弃。

查看指标的可配置统计数据 (控制台)

1. 转至 https://aws.amazon.com,然后选择 Sign In to the Console。2. 在 Analytics 下,选择 Elasticsearch Service。3. 在导航窗格的 My domains 下,选择您的 Amazon ES 域。4. 选择 Monitoring 选项卡。5. 选择您要查看的指标。6. 从 Statistic 列表中,选择统计数据。

有关每个指标相关统计数据的列表,请参阅群集指标 (p. 43)中的表格。部分统计数据与给定指标不相关。例如,Sum 统计数据对 Nodes 指标没有意义。

7. 选择 Update graph。

群集指标Note

要检查您的群集指标是否在 Amazon Elasticsearch Service 控制台中不可用,请使用 AmazonCloudWatch。

AWS/ES 命名空间包括以下群集指标。

指标 描述

ClusterStatus.green 指示将所有索引分片分配给群集中的节点。

相关统计数据:Minimum、Maximum

ClusterStatus.yellow 指示所有索引的主要分片分配给群集中的节点,但是至少有一个索引的分片副本不是如此。单节点群集始终初始化为此群集状态,因为不存在可将副本分配给的另一个节点。您可以增加节点计数来获取绿色群集状态,也可以使用 Elasticsearch API 将索引的 number_of_replicas 设置设为 0。有关更多信息,请参阅 Elasticsearch 文档中的配置 AmazonElasticsearch Service 域和更新索引设置。

相关统计数据:Minimum、Maximum

ClusterStatus.red 指示至少一个索引的主分片和副本分片未分配给群集中的节点。要恢复,您必须删除索引或还原快照,然后添加基于 EBS 的存储、使用较大的实例类型或添加实例。有关更多信息,请参阅红色群集状态。

相关统计数据:Minimum、Maximum

Nodes Amazon ES 群集中的节点数。

相关统计数据:Minimum、Maximum、Average

SearchableDocuments 群集中所有索引中的可搜索文档的总数。

相关统计数据:Minimum、Maximum、Average

API 版本 2015-01-0143

Page 50: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南群集指标

指标 描述

DeletedDocuments 群集中所有索引中的已删除文档的总数。

相关统计数据:Minimum、Maximum、Average

CPUUtilization 用于群集中的数据节点的 CPU 资源的最大百分比。

相关统计数据:Maximum、Average

FreeStorageSpace 群集中节点的可用空间 (以 MB 为单位)。Sum 显示群集的总可用空间。Minimum、Maximum 和 Average 显示各个节点的可用空间。当该指标达到 0 时,Amazon ES 将引发 ClusterBlockException。要恢复,您必须删除索引,添加更大的实例,或向现有实例添加基于 EBS 的存储。有关更多信息,请参阅从缺少可用存储空间恢复。

Note

FreeStorageSpace 将始终小于 Elasticsearch _cluster/stats API 提供的值。Amazon ES 在每个实例上为内部操作预留一个存储空间百分比。

相关统计数据:Minimum、Maximum、Average、Sum

ClusterUsedSpace 群集的已使用空间总量(以 MB 为单位)。您可以在 AmazonCloudWatch 控制台而不是 Amazon ES 控制台中查看此指标。

相关统计数据:Minimum、Maximum

ClusterIndexWritesBlocked指示您的群集是接受还是阻止传入的写入请求。值为 0 表示群集接受请求。值为 1 表示阻止请求。

许多因素都可能导致群集开始阻止请求。一些常见的因素包括:FreeStorageSpace 过低、JVMMemoryPressure 过高、或CPUUtilization 过高。为了缓解这一问题,可以考虑增加磁盘空间或扩展群集。

相关统计数据:Maximum

Note

您可以在 Amazon CloudWatch 控制台而不是 Amazon ES 控制台中查看此指标。

JVMMemoryPressure 用于群集中所有数据节点的 Java 堆的最大百分比。

相关统计数据:Maximum

AutomatedSnapshotFailure 群集的失败的自动快照的数量。值 1 指示在过去的 36 个小时内未为域拍摄自动快照。

相关统计数据:Minimum、Maximum

CPUCreditBalance 群集中的数据节点可用的剩余 CPU 积分。一个 CPU 积分提供一个完整 CPU 核心在一分钟内的性能。有关更多信息,请参阅 Amazon EC2 开发人员指南 中的 CPU 积分。此指标仅适用于 t2.micro.elasticsearch、t2.small.elasticsearch 和t2.medium.elasticsearch 实例类型。

相关统计数据:Minimum

API 版本 2015-01-0144

Page 51: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南群集指标

指标 描述

KibanaHealthyNodes Kibana 运行状况检查。值为 1 表示行为正常。值为 0 表示无法访问Kibana。在大多数情况下,Kibana 的运行状况反映了群集的运行状况。

相关统计数据:Minimum

Note

您可以在 Amazon CloudWatch 控制台而不是 Amazon ES 控制台中查看此指标。

KMSKeyError 值 1 表示已禁用用于加密静态数据的 KMS 客户主密钥。要将域还原为正常操作,请重新启用该密钥。控制台仅对该加密静态数据的域显示此指标。

相关统计数据:Minimum、Maximum

KMSKeyInaccessible 值 1 表示已删除用于加密静态数据的 KMS 客户主密钥或已撤销其对Amazon ES 的授权。您无法恢复处于此状态的域。但如果您具有手动快照,则可以使用它将该域的数据迁移到新域。控制台仅对该加密静态数据的域显示此指标。

相关统计数据:Minimum、Maximum

以下屏幕截图显示上表中所述的群集指标。

API 版本 2015-01-0145

Page 52: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南专用主节点指标

专用主节点指标AWS/ES 命名空间包括专用主节点的以下指标。

指标 描述

MasterCPUUtilization 专用主节点使用的 CPU 资源的最大百分比。建议在此指标达到 60% 时增加实例类型的大小。

相关统计数据:Average

MasterFreeStorageSpace 此指标不相关,可以被忽略。该服务不使用主节点作为数据节点。

MasterJVMMemoryPressure 用于群集中所有专用主节点的 Java 堆的最大百分比。建议在此指标达到85% 时迁移到更大的实例类型。

API 版本 2015-01-0146

Page 53: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南EBS 卷指标。

指标 描述相关统计数据:Maximum

MasterCPUCreditBalance 群集中专用主节点可用的剩余 CPU 积分。一个 CPU 积分提供一个完整 CPU 核心在一分钟内的性能。有关更多信息,请参阅Amazon EC2 用户指南(适用于 Linux 实例) 中的 CPU 积分。此指标仅适用于 t2.micro.elasticsearch、t2.small.elasticsearch 和t2.medium.elasticsearch 实例类型。

相关统计数据:Minimum

MasterReachableFromNode MasterNotDiscovered 运行状况检查异常。值为 1 表示行为正常。值为 0 表示 /_cluster/health/ 失败。

失败意味着主节点已停止或无法访问。这通常是由网络连接问题或 AWS依赖问题导致的。

相关统计数据:Minimum

Note

您可以在 Amazon CloudWatch 控制台而不是 Amazon ES 控制台中查看此指标。

以下屏幕截图显示了上表中所述的专用主节点指标。

EBS 卷指标。AWS/ES 命名空间包括 EBS 卷的以下指标。

API 版本 2015-01-0147

Page 54: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南EBS 卷指标。

指标 描述

ReadLatency EBS 卷上读取操作的延迟(以秒为单位)。

相关统计数据:Minimum、Maximum、Average

WriteLatency EBS 卷上写入操作的延迟(以秒为单位)。

相关统计数据:Minimum、Maximum、Average

ReadThroughput EBS 卷上读取操作的吞吐量(以字节/秒为单位)。

相关统计数据:Minimum、Maximum、Average

WriteThroughput EBS 卷上写入操作的吞吐量(以字节/秒为单位)。

相关统计数据:Minimum、Maximum、Average

DiskQueueDepth 针对 EBS 卷的待处理输入和输出 (I/O) 请求的数量。

相关统计数据:Minimum、Maximum、Average

ReadIOPS 针对 EBS 卷上的读取操作的每秒输入和输出 (I/O) 操作数。

相关统计数据:Minimum、Maximum、Average

WriteIOPS 针对 EBS 卷上的写入操作的每秒输入和输出 (I/O) 操作数。

相关统计数据:Minimum、Maximum、Average

以下屏幕截图显示上表中所述的 EBS 卷指标。

API 版本 2015-01-0148

Page 55: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南使用 AWS CloudTrail 记录配置服务调用

使用 AWS CloudTrail 审核 Amazon ElasticsearchService 域

Amazon Elasticsearch Service (Amazon ES) 与 AWS CloudTrail 集成在一起,后者是一项服务,该服务记录由您的 AWS 账户或代表该账户进行的所有 AWS API 调用。日志文件传送到通过以下存储桶策略创建并配置的 Amazon S3 存储桶:允许 CloudTrail 将日志文件写入存储桶。CloudTrail 捕获所有 Amazon ES 配置服务 API 调用,包括 Amazon Elasticsearch Service 控制台提交的调用。

您可以使用 CloudTrail 收集的信息来监控搜索域的活动。您可以确定向 Amazon ES 发出了什么请求、发出请求的源 IP 地址、何人发出的请求以及发出请求的时间等。要了解有关 CloudTrail 的更多信息,包括如何对其进行配置和启用,请参阅 AWS CloudTrail User Guide要了解更多有关如何为 CloudTrail 创建和配置 S3 存储桶的信息,请参阅 Amazon 适用于 CloudTrail 的 S3 存储桶策略。

Note

CloudTrail 仅将与配置相关的 API 调用事件记录到 Amazon Elasticsearch Service。数据相关的 API不会被记录。

下面的示例显示了 Amazon ES 的一个示例 CloudTrail 日志:

{ "Records": [ { "eventVersion": "1.03", "userIdentity": { "type": "Root", "principalId": "000000000000",

API 版本 2015-01-0149

Page 56: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南CloudTrail 中的 Amazon ES 信息

"arn": "arn:aws:iam::000000000000:root", "accountId": "000000000000", "accessKeyId": "A*****************A" }, "eventTime": "2015-07-31T21:28:06Z", "eventSource": "es.amazonaws.com", "eventName": "CreateElasticsearchDomain", "awsRegion": "us-east-1", "sourceIPAddress": "Your IP", "userAgent": "es/test", "requestParameters": { "elasticsearchClusterConfig": {}, "snapshotOptions": { "automatedSnapshotStartHour": "0" }, "domainName": "your-domain-name", "eBSOptions": { "eBSEnabled": false } }, "responseElements": { "domainStatus": { "created": true, "processing": true, "aRN": "arn:aws:es:us-east-1:000000000000:domain/your-domain-name", "domainId": "000000000000/your-domain-name", "elasticsearchClusterConfig": { "zoneAwarenessEnabled": false, "instanceType": "m3.medium.elasticsearch", "dedicatedMasterEnabled": false, "instanceCount": 1 }, "deleted": false, "domainName": "your-domain-name", "domainVersion": "1.5", "accessPolicies": "", "advancedOptions": { "rest.action.multi.allow_explicit_index": "true" }, "snapshotOptions": { "automatedSnapshotStartHour": "0" }, "eBSOptions": { "eBSEnabled": false } } }, "requestID": "05dbfc84-37cb-11e5-a2cd-fbc77a4aae72", "eventID": "c21da94e-f5ed-41a4-8703-9a5f49e2ec85", "eventType": "AwsApiCall", "recipientAccountId": "000000000000" } ]}

CloudTrail 中的 Amazon Elasticsearch Service 信息在您的 AWS 账户中启用 CloudTrail 日志记录后,将在日志文件中跟踪对 Amazon ElasticsearchService (Amazon ES) 操作执行的 API 调用。Amazon ES 记录会与其他 AWS 服务记录一起写入日志文件。CloudTrail 基于时间段和文件大小来确定何时创建新文件并向其写入内容。

所有 Amazon ES 配置服务操作都会记录。例如,对CreateElasticsearchDomain、DescribeElasticsearchDomain 和

API 版本 2015-01-0150

Page 57: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南了解 Amazon ES 日志文件条目

UpdateElasticsearchDomainConfig 的调用将在 CloudTrail 日志文件中生成条目。每个日志条目都包含有关生成请求的人员的信息。日志中的用户身份信息有助于确定请求是由根或 IAM 用户凭证发出,通过某个角色或联合用户的临时安全凭证发出,还是由其他 AWS 服务发出。有关更多信息,请参阅userIdentityCloudTrail 事件参考中的 字段。

您可以将日志文件无限期地存储在存储桶中,也可以定义 Amazon S3 生命周期规则以自动存档或删除日志文件。默认情况下,将使用 Amazon S3 服务器端加密 (SSE) 对日志文件进行加密。如果需要针对日志文件传输快速采取措施,可选择让 CloudTrail 在传输新日志文件时发布 Amazon SNS 通知。有关更多信息,请参阅为 CloudTrail 配置 Amazon SNS 通知。您还可以将多个 AWS 区域和多个 AWS 账户中的 Amazon ES日志文件聚合到单个 Amazon S3 存储桶中。有关更多信息,请参阅接收来自多个区域的 CloudTrail 日志文件。

了解 Amazon Elasticsearch Service 日志文件条目CloudTrail 日志文件可包含一个或多个日志条目,每个条目由多个 JSON 格式的事件组成。一个日志条目表示来自任何源的一个请求,包括有关所请求的操作、所有参数以及操作的日期和时间等信息。不能保证日志条目具有任何特定顺序 (即,它们不是公共 API 调用的有序堆栈跟踪)。CloudTrail 日志文件包含 AWS 账户的所有 AWS API 调用 (而不只是 Amazon ES 配置服务 API 调用) 的事件。但是,您可以读取日志文件并扫描 eventSource es.amazonaws.com。eventName 元素包含所调用的配置服务操作的名称。

标记 Amazon Elasticsearch Service 域您可使用 Amazon ES 标签向您的 Amazon ES 域添加元数据。AWS 不会对您的标签应用任何语义意义。标签会严格地作为字符串进行解析。所有标签均包含以下元素。

标签元素 描述

标记密钥 标签键是标签的名称,属于必填内容。标签键在其附加的 Amazon ES 域中必须是唯一的。有关对标签键和值的基本限制的列表,请参阅用户定义的标签限制。

标记值 标签值则是一个可选的标签字符串值。标签值可为空值,且在标签集中不必具有唯一性。例如,在“项目/Trinity”和“成本 - 中心/Trinity”的一个标签集中,可以存在密钥值对。有关对标签键和值的基本限制的列表,请参阅用户定义的标签限制。

每个 Amazon ES 域都有一组标签,其中包含分配给该 Amazon ES 域的所有标签。AWS 不会自动在Amazon ES 域上设置任何标签。一个标签集可以包含最多 50 个标签,也可以为空。如果向 Amazon ES 域添加一个标签,而该标签的键与资源上某个现有的标签相同,则新值将覆盖旧值。

最后,通过将具有类似标签的资源的支出集中在一起,您可以使用这些标签跟踪成本。Amazon ES 域是由您定义的名称-值对,与某种 Amazon ES 域关联。此名称也叫键。可使用标签向 Amazon ES 域分配任意信息。举例来说,标签键可用于定义一个类别,而标签值可以是该类别中的一个项目。例如,可定义“project”标签键和“Salix”标签值,表示向 Salix 项目分配了 Amazon ES 域。也可使用标签通过environment=test 或 environment=production 等键指定 Amazon ES 域用于测试或生产。我们建议使用一组具有一致性的标签键,以使跟踪与 Amazon ES 域关联的元数据变得更轻松。

您也可以使用标签来管理 AWS 账单,使其反映您的成本结构。要执行此操作,请注册以获取包含标签键值的 AWS 账户账单。然后,如需查看组合资源的成本,请按有同样标签键值的资源组织您的账单信息。例如,您可以使用键-值对标记多个 Amazon ES 域,然后组织账单信息,以查看在数个服务中的每个域的总成本。有关更多信息,请参阅 AWS 账单和成本管理文档中的使用成本分配标签。

Note

对标签进行缓存以用于授权。因此,可能先用几分钟添加和更新 Amazon ES 域上的标签,然后标签才可用。

API 版本 2015-01-0151

Page 58: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南使用标签 (控制台)

使用标签 (控制台)请使用以下步骤创建资源标签。

创建标签 (控制台)

1. 转至 https://aws.amazon.com,然后选择 Sign In to the Console。2. 在 Analytics 下,选择 Elasticsearch Service。3. 在导航窗格中,选择您的 Amazon ES 域。4. 在域控制面板上,选择 Manage tags。5. 在 Key 列中,键入标签键。6. (可选) 在 Value 列中,键入一个标签值。7. 选择 Submit。

删除标签 (控制台)

使用以下过程可删除资源标签。

1. 转至 https://aws.amazon.com,然后选择 Sign In to the Console。2. 在 Analytics 下,选择 Elasticsearch Service。3. 在导航窗格中,选择您的 Amazon ES 域。4. 在域控制面板上,选择 Manage tags。5. 在要删除的标签的旁边,选择 Remove。6. 选择 Submit。

有关使用控制台处理标签的更多信息,请参阅 AWS 管理控制台入门指南中的使用标签编辑器。

使用标签 (AWS CLI)您可以使用 AWS CLI 通过 --add-tags 命令创建资源标签。

语法

add-tags --arn=<domain_arn> --tag-list Key=<key>,Value=<value>

参数 说明

--arn 附加标签的 Amazon ES 域的 Amazon 资源名称。

--tag-list 采用以下格式设置空格分隔的键值对:Key=<key>,Value=<value>

示例

以下示例为 logs 域创建两个标签:

aws es add-tags --arn arn:aws:es:us-east-1:379931976431:domain/logs --tag-list Key=service,Value=Elasticsearch Key=instances,Value=m3.2xlarge

您可以使用 remove-tags 命令从 Amazon ES 域移除标签。

语法

API 版本 2015-01-0152

Page 59: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南使用标签 (AWS 软件开发工具包)

remove-tags --arn=<domain_arn> --tag-keys Key=<key>,Value=<value>

参数 说明

--arn 附加标签的 Amazon ES 域的 Amazon 资源名称 (ARN)。

--tag-keys 设置您要从 Amazon ES 域中移除的空格分隔的键-值对。

示例

以下示例从之前示例中创建的 logs 域中移除两个标签:

aws es remove-tags --arn arn:aws:es:us-east-1:379931976431:domain/logs --tag-keys service instances

您可以通过 list-tags 命令查看一个 Amazon ES 域中的现有标签:

语法

list-tags --arn=<domain_arn>

参数 说明

--arn 附加标签的 Amazon ES 域的 Amazon 资源名称 (ARN)。

示例

以下示例列出了 logs 域中的所有资源标签:

aws es list-tags --arn arn:aws:es:us-east-1:379931976431:domain/logs

使用标签 (AWS 软件开发工具包)AWS 软件开发工具包 (除 Android 和 iOS 软件开发工具之外) 支持在 Amazon ES 配置 API 参考 (p. 116)中定义的所有操作,包括 AddTags、ListTags 和 RemoveTags 操作。有关安装和使用 AWS 软件开发工具包的更多信息,请参阅 AWS 软件开发工具包。

API 版本 2015-01-0153

Page 60: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南建立索引的简介

在 Amazon Elasticsearch Service 中为数据建立索引

由于 Elasticsearch 使用的是 REST API,因此可通过多种方法为文档建立索引。您可以使用标准客户端 (如curl) 或可发送 HTTP 请求的任何编程语言。为了进一步简化与之交互的过程,Elasticsearch 拥有了适用于多种编程语言的低级别客户端。高级用户可以直接跳至the section called “编程索引” (p. 55)。

对于新数据以递增方式到达的情况 (例如,来自小型企业的客户订单),您可使用 _index API 在文档到达时为其建立索引。对于数据流频率较低的情况 (例如,市场营销网站的每周更新),您可能更愿意生成一个文件并将该文件发送到 _bulk API。对于大量文档,将请求集中在一起并使用 _bulk API 可实现卓越性能。但是,如果您有很多文档,您可能需要使用 _index API 为这些文档建立索引。

有关从其他 AWS 服务集成数据的信息,请参阅将流数据到加载到 Amazon ES (p. 61)。

建立索引的简介您必须先为数据建立索引,然后才能搜索数据。建立索引是搜索引擎整理数据以实现快速检索的方法。生成的结构被称为“索引”。

在 Elasticsearch 中,数据的基本单位是 JSON 文档。在索引中,Elasticsearch 将文档整理到类型 (您定义的任意数据类型) 中并使用唯一 ID 标识它们。

对 _index API 的请求如下所示:

PUT elasticsearch_domain_endpoint/index/type/id -d 'document'

由于您在批量数据文件中指定索引、类型和 ID,因此,对 _bulk API 的请求看起来会略为不同:

POST elasticsearch_domain_endpoint/_bulk --data-binary @bulk_movies.json

批量数据文件必须符合特定文件格式,即每行末尾处 (包括最后一行) 有一个换行符 (\n)。这是基本格式:

action_and_metadata\noptional_document\naction_and_metadata\noptional_document\n...

有关简短示例文件,请参阅the section called “步骤 2:上传数据用于索引” (p. 9)。

在您将文档添加到不存在的索引时,Elasticsearch 会采用自动索引创建。如果未在请求中指定 ID,它还会自动生成 ID。此简单示例会自动创建 movies 索引、建立 movie 文档类型、为文档建立索引并向文档分配唯一 ID:

curl -XPOST elasticsearch_domain_endpoint/movies/movie -d '{"title": "Spirited Away"}' -H 'Content-Type: application/json'

API 版本 2015-01-0154

Page 61: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南编程索引

Important

要使用自动 ID 生成,您必须使用 POST 方法而不是 PUT。

要验证文档是否存在,您可以执行以下搜索:

curl -XGET elasticsearch_domain_endpoint/movies/_search?pretty

该响应应包含以下内容:

"hits" : { "total" : 1,  "max_score" : 1.0,  "hits" : [  {    "_index" : "movies",      "_type" : "movie",      "_id" : "AV4WaTnYxBoJaZkSFeX9",      "_score" : 1.0,      "_source" : {        "title" : "Spirited Away"      }    }  ]}

自动生成 ID 有一个明显的缺点:由于索引代码未指定文档 ID,以后无法轻松更新文档。

索引默认为 5 个主分片和 1 个副本。如果您要指定非默认设置,请在添加文档之前创建索引:

curl -XPUT elasticsearch_domain_endpoint/movies -d '{"settings": {"number_of_shards": 6, "number_of_replicas": 2}}' -H 'Content-Type: application/json'

Note

使用 curl 的请求是未经身份验证的,并且依赖基于 IP 的访问策略。有关已签名请求的示例,请参阅the section called “编程索引” (p. 55)。

Elasticsearch 索引具有以下命名限制:

• 所有字母必须为小写形式。• 索引名称不能以 _ 或 - 开头。• 索引名称不能包含空格、逗号、"、*、+、/、\、|、?、> 或 <。

编程索引此部分包括有关如何使用常用 Elasticsearch 客户端为文档建立索引的示例。

Python您可以使用 pip 安装 elasticsearch-py,后者是适用于 Python 的正式 Elasticsearch 客户端。您可能更喜欢请求而非使用客户端。requests-aws4auth 程序包简化了身份验证过程,但并非硬性要求。从终端设备运行以下命令:

pip install elasticsearch

API 版本 2015-01-0155

Page 62: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南Python

pip install requestspip install requests-aws4auth

以下示例代码将建立与指定 Amazon ES 域的安全连接,并使用 _index API 为单个文档建立索引。您必须提供 AWS_ACCESS_KEY、AWS_SECRET_KEY、region 和 host 的值:

from elasticsearch import Elasticsearch, RequestsHttpConnectionfrom requests_aws4auth import AWS4Auth

AWS_ACCESS_KEY = ''AWS_SECRET_KEY = ''region = '' # For example, us-east-1service = 'es'

awsauth = AWS4Auth(AWS_ACCESS_KEY, AWS_SECRET_KEY, region, service)

host = '' # For example, my-test-domain.us-east-1.es.amazonaws.com

es = Elasticsearch( hosts = [{'host': host, 'port': 443}], http_auth = awsauth, use_ssl = True, verify_certs = True, connection_class = RequestsHttpConnection)

document = { "title": "Moneyball", "director": "Bennett Miller", "year": "2011"}

es.index(index="movies", doc_type="movie", id="5", body=document)

print(es.get(index="movies", doc_type="movie", id="5"))

Important

这些示例用于测试目的。我们建议不要将您的 AWS 访问密钥和 AWS 私有密钥直接存储在代码中。

如果您不想使用 elasticsearch.py 客户端,可以仅发出标准 HTTP 请求。此示例将创建一个具有 7 个分片和 2 个副本的新索引:

import requestsfrom requests_aws4auth import AWS4Auth

AWS_ACCESS_KEY = ''AWS_SECRET_KEY = ''region = '' # For example, us-east-1service = 'es'

awsauth = AWS4Auth(AWS_ACCESS_KEY, AWS_SECRET_KEY, region, service)

host = '' # The domain with https:// and trailing slash. For example, https://my-test-domain.us-east-1.es.amazonaws.com/path = 'my-index' # the Elasticsearch API endpoint

url = host + path

# The JSON body to accompany the request (if necessary)payload = { "settings" : { "number_of_shards" : 7,

API 版本 2015-01-0156

Page 63: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南Python

"number_of_replicas" : 2 }}

r = requests.put(url, auth=awsauth, json=payload) # requests.get, post, and delete have similar syntax

print(r.text)

下一示例使用 Beautiful Soup 库帮助基于 HTML 文件本地目录构建批量文件。使用与第一个示例相同的客户端,可以将该文件发送到 _bulk API,以进行索引编制。您可以基于这些代码向网站添加搜索功能:

from bs4 import BeautifulSoupfrom elasticsearch import Elasticsearch, RequestsHttpConnectionfrom requests_aws4auth import AWS4Authimport globimport json

bulk_file = ''id = 1

# This loop iterates through all HTML files in the current directory and# indexes two things: the contents of the first h1 tag and all other text.

for html_file in glob.glob('*.htm'):

with open(html_file) as f: soup = BeautifulSoup(f, 'html.parser')

title = soup.h1.string body = soup.get_text(" ", strip=True) # If get_text() is too noisy, you can do further processing on the string.

index = { 'title': title, 'body': body, 'link': html_file } # If running this script on a website, you probably need to prepend the URL and path to html_file.

# The action_and_metadata portion of the bulk file bulk_file += '{ "index" : { "_index" : "site", "_type" : "page", "_id" : "' + str(id) + '" } }\n'

# The optional_document portion of the bulk file bulk_file += json.dumps(index) + '\n'

id += 1

AWS_ACCESS_KEY = ''AWS_SECRET_KEY = ''region = '' # For example, us-east-1service = 'es'

awsauth = AWS4Auth(AWS_ACCESS_KEY, AWS_SECRET_KEY, region, service)

host = '' # For example, my-test-domain.us-east-1.es.amazonaws.com

es = Elasticsearch( hosts = [{'host': host, 'port': 443}], http_auth = awsauth, use_ssl = True, verify_certs = True, connection_class = RequestsHttpConnection)

es.bulk(bulk_file)

API 版本 2015-01-0157

Page 64: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南Java

print(es.search(q='some test query'))

Java此处的第一个示例使用 Elasticsearch Java REST 客户端,您必须将该客户端配置为依赖项。请求是未经身份验证的,并且依赖基于 IP 的访问策略。您必须提供 host 的值:

import java.io.IOException;import java.util.Collections;

import org.elasticsearch.client.Response;import org.elasticsearch.client.RestClient;import org.elasticsearch.client.http.entity.ContentType;import org.elasticsearch.client.http.HttpEntity;import org.elasticsearch.client.http.HttpHost;import org.elasticsearch.client.http.nio.entity.NStringEntity;

public class JavaRestClientExample {

public static void main(String[] args) throws IOException {

String host = ""; // For example, my-test-domain.us-east-1.es.amazonaws.com String index = "movies"; String type = "movie"; String id = "6";

String json = "{" + "\"title\":\"Walk the Line\"," + "\"director\":\"James Mangold\"," + "\"year\":\"2005\"" + "}";

RestClient client = RestClient.builder(new HttpHost(host, 443, "https")).build();

HttpEntity entity = new NStringEntity(json, ContentType.APPLICATION_JSON);

Response response = client.performRequest("PUT", "/" + index + "/" + type + "/" + id, Collections.<String, String>emptyMap(), entity);

System.out.println(response.toString()); }}

发送已签名请求的最简单的方式是使用 AWS 请求签名拦截程序。存储库包含帮助您入门的示例。您必须更改 Sample.java 中的区域字符串和 AmazonElasticsearchServiceSample.java 中的 Amazon ES终端节点。

将已签名请求发送到 Amazon ES 的更复杂的方式是使用AWS SDK for Java。注意用于响应和错误处理的两个帮助程序类。您必须提供 host 和 region 的值:

import java.io.ByteArrayInputStream;import java.io.IOException;import java.net.URI;import java.net.URISyntaxException;

import com.amazonaws.ClientConfiguration;import com.amazonaws.DefaultRequest;import com.amazonaws.Request;import com.amazonaws.auth.AWS4Signer;import com.amazonaws.auth.AWSCredentials;import com.amazonaws.auth.AWSCredentialsProvider;import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;

API 版本 2015-01-0158

Page 65: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南Java

import com.amazonaws.http.AmazonHttpClient;import com.amazonaws.http.ExecutionContext;import com.amazonaws.http.HttpMethodName;

public class JavaClientExampleWithAuth {

public static void main(String[] args) throws IOException, URISyntaxException {

// Intentionally verbose. String prefix = "https://"; String host = ""; // For example, my-test-domain.us-east-1.es.amazonaws.com String index = "movies"; String type = "movie"; String id = "6"; String endpoint = prefix + host + "/" + index + "/" + type + "/" + id;

String service = "es"; String region = ""; // For example, us-east-1

// Libraries like Jackson simplify the conversion of objects to JSON. Here, we // just use a string.

String json = "{" + "\"title\":\"Walk the Line\"," + "\"director\":\"James Mangold\"," + "\"year\":\"2005\"" + "}";

// Builds the request. We need an AWS service, URI, HTTP method, and request // body (in this case, JSON).

Request<?> request = new DefaultRequest<Void>(service); request.setEndpoint(new URI(endpoint)); request.setHttpMethod(HttpMethodName.PUT); request.setContent(new ByteArrayInputStream(json.getBytes()));

// Retrieves our credentials from the computer. For more information on where // this class looks for credentials, see // http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html.

AWSCredentialsProvider credsProvider = new DefaultAWSCredentialsProviderChain(); AWSCredentials creds = credsProvider.getCredentials();

// Signs the request using our region, service, and credentials. AWS4Signer // modifies the original request rather than returning a new request.

AWS4Signer signer = new AWS4Signer(); signer.setRegionName(region); signer.setServiceName(service); signer.sign(request, creds); request.addHeader("Content-Type", "application/json");

// Creates and configures the HTTP client, creates the error and response // handlers, and finally executes the request.

ClientConfiguration config = new ClientConfiguration(); AmazonHttpClient client = new AmazonHttpClient(config); ExecutionContext context = new ExecutionContext(true); MyErrorHandler errorHandler = new MyErrorHandler(); MyHttpResponseHandler<Void> responseHandler = new MyHttpResponseHandler<Void>(); client.requestExecutionBuilder().executionContext(context).errorResponseHandler(errorHandler).request(request) .execute(responseHandler); }}

API 版本 2015-01-0159

Page 66: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南Java

import com.amazonaws.AmazonWebServiceResponse;import com.amazonaws.http.HttpResponseHandler;

public class MyHttpResponseHandler<T> implements HttpResponseHandler<AmazonWebServiceResponse<T>> {

@Override public AmazonWebServiceResponse<T> handle(com.amazonaws.http.HttpResponse response) throws Exception { AmazonWebServiceResponse<T> awsResponse = new AmazonWebServiceResponse<T>(); return awsResponse; }

@Override public boolean needsConnectionLeftOpen() { return false; }}

import com.amazonaws.AmazonServiceException;import com.amazonaws.http.HttpResponseHandler;

public class MyErrorHandler implements HttpResponseHandler<AmazonServiceException> {

@Override public AmazonServiceException handle(com.amazonaws.http.HttpResponse response) throws Exception { AmazonServiceException ase = new AmazonServiceException(""); ase.setStatusCode(response.getStatusCode()); ase.setErrorCode(response.getStatusText()); return ase; }

@Override public boolean needsConnectionLeftOpen() { return false; }}

API 版本 2015-01-0160

Page 67: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南从 Amazon S3 将流数据加载到 Amazon ES

将流数据加载到 AmazonElasticsearch Service

您可以从 Amazon S3 存储桶、Amazon Kinesis 流、Amazon DynamoDB 流和 Amazon CloudWatch 指标将流数据加载到 Amazon ES 域。例如,要从 Amazon S3 和 Amazon Kinesis 加载流数据,您可以使用Lambda 函数作为 AWS 云中的事件处理程序。Lambda 函数响应新数据的方式是处理数据并将其流式传输到您的域。

主题• 从 Amazon S3 将流数据加载到 Amazon ES (p. 61)• 从 Amazon Kinesis 将流数据加载到 Amazon ES (p. 64)• 从 Amazon Kinesis Firehose 将流数据加载到 Amazon ES (p. 67)• 从 Amazon DynamoDB 将流数据加载到 Amazon ES (p. 67)• 从 Amazon CloudWatch 将流数据加载到 Amazon ES (p. 67)• 将数据从 AWS IoT 加载到 Amazon ES (p. 67)

流数据为搜索和分析查询提供新数据。Amazon S3 将事件通知推送到 AWS Lambda。有关更多信息,请参阅 AWS Lambda Developer Guide 中的将 AWS Lambda 与 Amazon S3 一起使用。Amazon Kinesis 要求AWS Lambda 轮询或拉取事件通知。有关更多信息,请参阅随 Amazon Kinesis 一起使用 AWS Lambda。

您应该熟悉这些服务集成,然后才能尝试使用它们将流数据加载到您的 Amazon ES 域。有关这些服务的更多信息,请参阅以下 AWS 文档:

• AWS Lambda 开发人员指南• Amazon S3 开发人员指南• Amazon Kinesis 开发人员指南• Amazon DynamoDB 开发人员指南• Amazon CloudWatch 用户指南• AWS IoT 开发人员指南

Note

AWS Lambda 在有限的区域内可用。有关更多信息,请参阅 AWS General Reference 中的 AWSLambda 区域列表。

从 Amazon S3 将流数据加载到 Amazon ES您可以将 Amazon ES 域集成到 Amazon S3 和 AWS Lambda。 发送到 S3 存储桶的任何新数据都将触发事件通知到 Lambda,然后运行您的自定义 Java 或 Node.js 应用程序代码。在您的应用程序处理数据后,它会将数据流式传输到您的域。概括来说,设置将流数据加载到 Amazon ES 需要以下步骤:

1. 创建 Lambda 部署程序包 (p. 62)2. 配置 Lambda 函数 (p. 63)3. 授予将数据添加到 Amazon ES 域的权限 (p. 64)

您还必须创建 Amazon S3 存储桶和一个 Amazon ES 域。设置此集成路径具有以下先决条件。

API 版本 2015-01-0161

Page 68: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南设置从 Amazon S3 将流数据加载到 Amazon ES

先决条件 描述

Amazon S3 存储桶 触发 Lambda 函数的事件源。有关更多信息,请参阅 Amazon Simple StorageService 入门指南 中的创建存储桶。该存储桶必须与您的 Amazon ES 域位于同一个 AWS 区域。

Amazon ES 域 数据经过 Lambda 函数的应用程序代码处理后的目标。有关更多信息,请参阅创建 Amazon ES 域 (p. 12)。

Lambda 函数 S3 推送事件通知到 Lambda 时运行的 Java 或 Node.js 应用程序代码。Amazon ES 提供了使用 Node.js 编写的示例应用程序s3_lambda_es.js,您可以先下载该应用程序。请参阅 Amazon ES 的Lambda 示例代码。

Lambda 部署程序包 包含您的 Java 或 Node.js 应用程序代码及所有依赖项的 .zip 文件。有关所需文件夹层次结构的信息,请参阅创建 Lambda 部署程序包 (p. 62)。有关创建特定的 Lambda 部署程序包的信息,请参阅创建部署程序包 (Node.js) 和创建部署程序包 (Java)。

Amazon ES 授权 允许 Lambda 将数据添加到您的域的 IAM 访问策略。将策略附加到您作为Lambda 函数的一部分创建的 Amazon S3 执行角色。有关详细信息,请参阅授予将数据添加到 Amazon ES 域的权限 (p. 64)。

设置从 Amazon S3 将流数据加载到 Amazon ES本部分提供了有关设置从 Amazon S3 将流数据加载到 Amazon ES的先决条件的更多详细信息。在完成集成配置之后,每当有新数据添加到您的 Amazon S3 存储桶时,数据会自动流式传输到您的 Amazon ES 域。

创建 Lambda 部署程序包创建一个包含 Lambda 应用程序代码及所有依赖项的 .zip 文件。

创建部署程序包:

1. 创建目录结构,如下所示:

eslambda \node_modules

此示例使用 eslambda 作为顶级文件夹的名称,但您可以使用任何名称。但是,子文件夹必须命名为node_modules。

2. 将应用程序源代码放入 eslambda 文件夹。3. 添加或编辑以下四个全局变量:

• endpoint,Amazon ES 域终端节点。• region,您创建 Amazon ES 域的 AWS 区域。• index,Amazon ES 索引的名称,用于从 Amazon S3 流式传输的数据。• doctype,流式数据的 Amazon ES 文档类型。有关更多信息,请参阅 Elasticsearch 文档中的映射类

型。

以下示例来自 s3_lambda_es.js,它配置示例应用程序以在 us-east-1 AWS 区域中使用 streaming-logs 域终端节点:

/* Globals */

API 版本 2015-01-0162

Page 69: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南设置从 Amazon S3 将流数据加载到 Amazon ES

var esDomain = { endpoint: 'search-streaming-logs-okga24ftzsbz2a2hzhsqw73jpy.us-east-1.es.example.com', region: 'us-east-1', index: 'streaming-logs', doctype: 'apache'};

4. 安装应用程序所需的所有依赖项。

例如,如果使用 Node.js,您必须为应用程序代码中的每个 require 语句执行以下命令:

npm install <dependency>

5. 验证应用程序代码需要的所有运行时依赖项是否位于 node_modules 文件夹中。6. 执行以下命令来打包应用程序代码和依赖项:

zip -r eslambda.zip *

zip 文件的名称必须与顶级文件夹匹配。

有关创建 Lambda 部署程序包的更多信息,请参阅创建部署程序包 (Node.js) 和创建部署程序包 (Java)。

配置 Lambda 函数使用 AWS Lambda 创建和配置您的 Lambda 函数。为此,您可以使用 AWS CLI 或 AWS Lambda 控制台。有关使用 AWS CLI 创建和配置 Lambda 函数的教程,请参阅配合使用 AWS Lambda 和 Amazon S3。关于AWS Lambda 控制台的配置设置,请参阅下表。

Note

有关创建和配置 Lambda 函数的更多信息,请参阅 AWS Lambda Developer Guide。

函数配置 描述

IAM 执行角色 用于在 Amazon S3 上执行操作的 IAM 角色的名称。在创建 Lambda 函数时,Lambda 控制台会自动打开 IAM 控制台,帮助您创建执行角色。 稍后,您还必须将 IAM 访问策略附加到该角色,以允许 Lambda 将数据添加到您的域。有关详细信息,请参阅授予将数据添加到 Amazon ES 域的权限 (p. 64)。

事件源 指定 S3 存储桶作为 Lambda 函数的事件源。有关说明,请参阅配合使用 AWSLambda 和 Amazon S3 教程。AWS Lambda 会自动为 Amazon S3 添加必要权限,以便从该事件源调用 Lambda 函数。根据需要,还可指定文件后缀来筛选哪些文件类型 (例如 .log) 可触发 Lambda 函数。

处理程序 包含应用程序源代码的文件的名称,文件后缀为 .handler。例如,如果您的应用程序源代码位于名为 s3_lambda_es.js 的文件中,您必须将处理程序配置为 s3_lambda_es.handler。有关更多信息,请参阅 AWS Lambda DeveloperGuide 中的入门部分。Amazon ES 提供了使用 Node.js 编写的示例应用程序 ,您可以先下载该应用程序:Amazon ES 的 Lambda 示例代码。

Timeout 取消调用请求之前 Lambda 应等待的时间长度。三秒的默认值对于 Amazon ES 使用案例而言过短。我们建议将超时时间配置为 10 秒。

有关更多函数配置详细信息,请参阅本指南中的配置 Lambda 函数 (p. 63)。有关一般信息,请参阅 AWSLambda Developer Guide 中的 Lambda 函数。

API 版本 2015-01-0163

Page 70: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南从 Amazon Kinesis 将流数据加载到 Amazon ES

授予将数据添加到 Amazon ES 域的权限如果您选择 S3 Execution Role 作为要在 S3 上执行操作的 IAM 角色,则 Lambda 将打开 IAM 控制台并帮助您创建新的执行角色。Lambda 会自动添加必要权限,以便从该事件源调用 Lambda 函数。创建完角色后,在 IAM 控制台中打开它,并将以下 IAM 访问策略附加到角色。这将授予 Lambda 将数据流式传输到Amazon ES 的权限:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "es:*" ], "Effect": "Allow", "Resource": "arn:aws:es:us-west-2:123456789012:domain/streaming-logs/*" } ]}

有关将 IAM 访问策略附加到角色的更多信息,请参阅 IAM 用户指南中的教程:创建和附加您的第一个客户托管策略。

从 Amazon Kinesis 将流数据加载到 Amazon ES您可以从 Amazon Kinesis 将流数据加载到 Amazon ES。这种集成依赖 AWS Lambda 作为云中的事件处理程序。Amazon Kinesis 要求 Lambda 轮询 Amazon Kinesis 流,以确定其是否有新数据将自动调用您的Lambda 函数。在您的 Lambda 函数结束处理任何新数据后,它会将数据流式传输到您的 Amazon ES 域。

概括来说,设置将流数据传输到 Amazon ES 需要以下步骤:

1. 创建 Lambda 部署程序包 (p. 65)。2. 配置 Lambda 函数 (p. 66)。3. 授予将数据添加到 Amazon ES 域的权限 (p. 66)。

您还必须创建 Amazon Kinesis 流和 Amazon ES 域。设置此集成路径具有以下先决条件。

先决条件 描述

Amazon Kinesis 流 Lambda 函数的事件源。有关创建 Amazon Kinesis 流的说明,请参阅Amazon Kinesis Streams。

Elasticsearch 域 数据经过 Lambda 函数的应用程序代码处理后的目标。有关更多信息,请参阅本指南中的创建 Amazon ES 域 (p. 12)。

Lambda 函数 Amazon Kinesis 推送事件通知到 Lambda 时运行的 Java 或 Node.js 应用程序代码。Amazon ES 提供了使用 Node.js 编写的示例应用程序 -kinesis_lambda_es.js,您可以先下载该应用程序:Amazon ES 的Lambda 示例代码。

Lambda 部署程序包 包含您的 Java 或 Node.js 应用程序代码及所有依赖项的 .zip 文件。有关所需文件夹层次结构的信息,请参阅创建 Lambda 部署程序包 (p. 62)。有关创建 Lambda 部署程序包的一般信息,请参阅创建部署程序包 (Node.js)和创建部署程序包 (Java)。

API 版本 2015-01-0164

Page 71: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南设置从 Amazon Kinesis 将流数据加载到 Amazon ES

先决条件 描述

Amazon ES 授权 允许 Lambda 将数据添加到您的域的 IAM 访问策略。将策略附加到您作为Lambda 函数的一部分创建的 Amazon Kinesis 执行角色。有关详细信息,请参阅授予将数据添加到 Amazon ES 域的权限 (p. 64)。

设置从 Amazon Kinesis 将流数据加载到 Amazon ES本部分提供了有关设置从 Amazon Kinesis 将流数据加载到 Amazon ES的先决条件的更多详细信息。在完成集成配置之后,每当有新数据添加到您的 Amazon Kinesis 流时,Lambda 会自动流式传输数据到您的Amazon ES 域。

创建 Lambda 部署程序包创建一个包含 Lambda 应用程序代码及所有依赖项的 .zip 文件。

创建部署程序包:

1. 创建目录结构,如下所示:

eslambda \node_modules

您的顶级文件夹可以使用除 eslambda 之外的任何名称。但子文件夹必须命名为 node_modules。2. 将应用程序源代码放入 eslambda 文件夹。3. 在您的示例应用程序中添加或编辑以下全局变量:

• endpoint,Amazon ES 域终端节点。• region,您创建 Amazon ES 域的 AWS 区域。• index,Amazon ES 索引的名称,用于从 Amazon Kinesis 流式传输的数据。• doctype,流式数据的 Amazon ES 文档类型。有关更多信息,请参阅 Elasticsearch 文档中的映射类

型。

以下示例来自 kinesis_lambda_es.js,它配置示例应用程序以在 us-east-1 AWS 区域中使用streaming-logs Amazon ES 域终端节点。

/* Globals */var esDomain = { endpoint: 'search-streaming-logs-okga24ftzsbz2a2hzhsqw73jpy.us-east-1.es.example.com', region: 'us-east-1', index: 'streaming-logs', doctype: 'apache'};

4. 安装应用程序所需的所有依赖项。

例如,如果使用 Node.js,您必须为应用程序代码中的每个 require 语句执行以下命令:

npm install <dependency>

5. 验证应用程序代码需要的所有运行时依赖项是否位于 node_modules 文件夹中。6. 执行以下命令来打包应用程序代码和依赖项:

zip -r eslambda.zip *

API 版本 2015-01-0165

Page 72: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南设置从 Amazon Kinesis 将流数据加载到 Amazon ES

zip 文件的名称必须与顶级文件夹匹配。

有关创建 Lambda 部署程序包的更多信息,请参阅创建部署程序包 (Node.js) 和创建部署程序包 (Java)。

配置 Lambda 函数使用 AWS Lambda 创建和配置您的 Lambda 函数。为此,您可以使用 AWS CLI 或创建部署程序包(Node.js) 控制台。有关使用 AWS CLI 创建和配置 Lambda 函数的教程,请参阅配合使用 AWS Lambda 和Amazon Kinesis。关于 AWS Lambda 控制台的配置设置,请参阅下表。

Note

有关创建和配置 Lambda 函数的更多信息,请参阅 AWS Lambda 开发人员指南中的入门教程。

配置 说明

Amazon Kinesis 流 Lambda 函数的事件源。有关说明,请参阅 Amazon Kinesis 流。

IAM 执行角色 用于在 Amazon Kinesis 上执行操作的 IAM 角色的名称。在配置 Lambda 函数时,Lambda 控制台会自动打开 IAM 控制台,帮助您创建执行角色。 稍后,您还必须将 IAM 访问策略附加到该角色,以允许 Lambda 发送数据到您的 Amazon ES域。有关详细信息,请参阅授予将数据添加到 Amazon ES 域的权限 (p. 66)。

处理程序 包含应用程序源代码的文件的名称,文件后缀为 .handler。例如,如果您的应用程序源代码位于名为 kinesis_lambda_es.js 的文件中,您必须将处理程序配置为 kinesis_lambda_es.handler。有关更多信息,请参阅 Lambda 函数处理程序。Amazon ES 提供了使用 Node.js 编写的示例应用程序 ,您可以先下载该应用程序:Amazon ES 的 Lambda 示例代码。

Timeout 取消调用请求之前 Lambda 应等待的时间长度。三秒的默认值对于此使用案例而言过短。我们建议将超时时间配置为 10 秒。

有关更多信息,请参阅 AWS Lambda Developer Guide 中的 Lambda 函数。

授予将数据添加到 Amazon ES 域的权限如果您选择 Kinesis Execution Role 作为要在 Amazon Kinesis 上执行操作的 IAM 角色,Lambda 将打开IAM 控制台并要求您创建新的执行角色。Lambda 会自动添加必要权限,以便从该事件源调用 Lambda 函数。创建完角色后,在 IAM 控制台中打开它,并将以下 IAM 访问策略附加到该角色,以便 Lambda 有权将数据流式传输到 Amazon ES:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "es:*" ], "Effect": "Allow", "Resource": "arn:aws:es:us-west-2:123456789012:domain/streaming-logs/*" } ]}

有关将 IAM 访问策略附加到角色的更多信息,请参阅 IAM 用户指南中的教程:创建和附加您的第一个客户托管策略。

API 版本 2015-01-0166

Page 73: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南从 Amazon Kinesis Firehose 将流数据加载到 Amazon ES

从 Amazon Kinesis Firehose 将流数据加载到Amazon ES

Amazon Kinesis 支持 Amazon ES 传输目标。有关如何将流数据加载到 Amazon ES 的说明,请参阅Amazon Kinesis Firehose 开发人员指南 中的创建 Amazon Kinesis Firehose 传输流和选择 Amazon ES 作为您的目标。

您可能需要在将数据加载到 Amazon ES 之前转换数据。要了解有关使用 Lambda 函数执行此任务的更多信息,请参阅 Amazon Kinesis Firehose 开发人员指南 中的数据转换。

在您配置传输流时,Kinesis Firehose 具有“一键式”IAM 角色,该角色将为传输流提供将数据发送到 AmazonES、在 Amazon S3 上备份数据以及使用 Lambda 转换数据所需的资源访问权限。由于手动创建此类角色的过程非常复杂,我们建议使用提供的角色。

从 Amazon DynamoDB 将流数据加载到 AmazonES

您可以从 Amazon DynamoDB 流将流数据加载到您的 Amazon ES 域。要执行此操作,请使用 AmazonDynamoDB 的 Logstash 输入插件和向 Amazon ES 签署和导出 Logstash 事件的 logstash-output-amazon-es 插件:

从 Amazon CloudWatch 将流数据加载到 AmazonES

您可以使用 CloudWatch Logs 订阅从 CloudWatch Logs 将流数据加载到您的 Amazon ES 域。有关Amazon CloudWatch 订阅的信息,请参阅使用订阅实时处理日志数据。有关配置信息,请参阅 AmazonCloudWatch 开发人员指南中的将 CloudWatch 日志数据流式传输到 Amazon Elasticsearch 服务。

将数据从 AWS IoT 加载到 Amazon ES您可以使用规则从 AWS IoT 发送数据。要了解更多信息,请参阅 AWS IoT 开发人员指南 中的 Amazon ES操作。

API 版本 2015-01-0167

Page 74: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南手动快照先决条件

使用 Amazon Elasticsearch Service索引快照

快照是群集的数据和状态的备份。快照提供便捷的方式来跨 Amazon ES 域迁移数据和从故障中恢复。该服务支持使用在 Amazon ES 域和自管理 Elasticsearch 群集中拍摄的快照来还原。

Amazon ES 拍摄域中的主索引分片的每日自动快照,如the section called “配置自动快照” (p. 23)中所述。它在预配置的 Amazon S3 存储桶中将这些自动快照存储 14 天,您无需额外付费。您可以使用这些快照来还原域。

但是,您不能使用自动快照来迁移到新域。自动快照只能从给定域读取。对于迁移,您必须使用存储在自己的存储库 (S3 存储桶) 中的手动快照。手动快照将收取标准 S3 费用。

Tip

一些用户找到了 Curator CLI 等方便用于索引和快照管理的工具。Curator CLI 提供了高级筛选功能,可帮助简化复杂群集上的任务。

主题• 手动快照先决条件 (p. 68)• 注册手动快照存储库 (p. 70)• 手动创建快照 (p. 72)• 还原快照 (p. 72)

手动快照先决条件要手动创建索引快照,您必须使用 IAM 和 Amazon S3。确认您已满足以下先决条件,然后再尝试创建快照。

先决条件 描述

S3 bucket 为您的 Amazon ES 域存储手动快照。

IAM 角色 委派权限给 Amazon Elasticsearch Service。角色的信任关系必须在 Principal 语句中指定 Amazon Elasticsearch Service。IAM 角色还需要通过 Amazon ES 注册您的快照存储库。只有可访问此角色的 IAM 用户能够注册该快照存储库。

IAM 策略 指定 Amazon S3 与 S3 存储桶一起执行的操作。该策略必须附加到委派权限给 AmazonElasticsearch Service 的 IAM 角色。该策略必须在 Resource 语句中指定 S3 存储桶。

S3Bucket

您需要 S3 存储桶来存储手动快照。记下它的 Amazon 资源名称 (ARN),形式为 arn:aws:s3:::bucket-name。在两个地方需要用到它:

• 附加到 IAM 角色的 IAM 策略的 Resource 语句• 用于注册快照存储库的 Python 客户端

有关更多信息,请参阅 Amazon S3 入门指南中的创建存储桶。

API 版本 2015-01-0168

Page 75: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南手动快照先决条件

IAM 角色

您必须具有在其信任关系的 Service 语句中指定 Amazon Elasticsearch Service es.amazonaws.com, 的角色,如下例所示:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

如果使用 IAM 控制台创建此角色,Amazon ES 不会包含在选择角色类型列表中。但是,您仍可以创建角色,方法是选择 Amazon EC2,按照步骤创建角色,然后编辑角色与 es.amazonaws.com 而非ec2.amazonaws.com 的信任关系。有关说明和其他信息,请参阅 IAM 用户指南 中的为 AWS 服务创建角色和修改角色。

Note

只有可访问此服务角色的 IAM 用户或角色可以注册快照存储库 (p. 70)。提供访问权限的常见方法是将以下策略附加到另一个用户或角色:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/TheServiceRole" }}

IAM 策略

您必须将 IAM 策略附加到 IAM 角色。该策略指定用于存储您的 Amazon ES 域的手动快照的 S3 存储桶。以下示例指定 es-index-backups 存储桶的 ARN:

{ "Version":"2012-10-17", "Statement":[ { "Action":[ "s3:ListBucket" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::es-index-backups" ] }, { "Action":[ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Effect":"Allow",

API 版本 2015-01-0169

Page 76: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南注册手动快照存储库

"Resource":[ "arn:aws:s3:::es-index-backups/*" ] } ]}

有关更多信息,请参阅 IAM 用户指南 中的创建客户托管策略和附加托管策略。

注册手动快照存储库您必须通过 Amazon Elasticsearch Service 注册快照存储库,然后才能拍摄手动索引快照。此一次性操作要求您使用 IAM 角色的信任关系中指定的用户或角色之一的凭证签署您的 AWS 请求,如the section called “手动快照先决条件” (p. 68)中所述。

您不能使用 curl 执行此操作,因为它不支持 AWS 请求签名。请使用示例 Python 客户端 (p. 70)来注册您的快照目录。

如果您的域位于 VPC 中,则您的计算机必须与 VPC 连接,Python 客户端才能成功注册快照存储库。访问VPC 因网络配置而异,但很可能包括连接到 VPN 或企业网络。要检查您是否可以访问 Amazon ES 域,请在 Web 浏览器中导航到 https://your-vpc-domain.region.es.amazonaws.com 并验证您是否收到默认的 JSON 响应。

示例 Python 客户端将下面的示例 Python 代码保存为 Python 文件,如 register-repo.py。客户端需要 requests 和requests-aws4auth 软件包。

注册快照目录是一次性操作,但要从一个域迁移到另一个域,您必须在旧域和新域中注册相同的快照存储库。客户端中还包含其他快照操作的带注释示例。

您必须在您的代码中进行下列更新:

AWS_ACCESS_KEY_ID

IAM 凭证AWS_SECRET_ACCESS_KEY

IAM 凭证region

创建快照存储库的 AWS 区域host

您的 Amazon ES 域的终端节点path

快照存储库的名称payload

必须包括 S3 存储桶的名称和您在the section called “手动快照先决条件” (p. 68)中创建的 IAM 角色的ARN。要为快照存储库启用使用 S3 托管密钥的服务器端加密,请将 "server_side_encryption":true 添加到 "settings" JSON。

import requests

API 版本 2015-01-0170

Page 77: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南示例 Python 客户端

from requests_aws4auth import AWS4Auth

AWS_ACCESS_KEY_ID=''AWS_SECRET_ACCESS_KEY=''region = 'us-west-1'service = 'es'

awsauth = AWS4Auth(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, region, service)

host = 'https://elasticsearch-domain.us-west-1.es.amazonaws.com/' # include https:// and trailing /

# REGISTER REPOSITORY

path = '_snapshot/my-snapshot-repo' # the Elasticsearch API endpointurl = host + path

payload = { "type": "s3", "settings": { "bucket": "s3-bucket-name", "region": "us-west-1", "role_arn": "arn:aws:iam::123456789012:role/TheServiceRole" }}

headers = {"Content-Type": "application/json"}

r = requests.put(url, auth=awsauth, json=payload, headers=headers) # requests.get, post, put, and delete all have similar syntax

print(r.text)

# # TAKE SNAPSHOT# # path = '_snapshot/my-snapshot-repo/my-snapshot'# url = host + path# # r = requests.put(url, auth=awsauth)# # print(r.text)# # # DELETE INDEX# # path = 'my-index'# url = host + path# # r = requests.delete(url, auth=awsauth)# # print(r.text)# # # RESTORE SNAPSHOT (ALL INDICES)# # path = '_snapshot/my-snapshot-repo/my-snapshot/_restore'# url = host + path# # r = requests.post(url, auth=awsauth)# # print(r.text)# # # RESTORE SNAPSHOT (ONE INDEX)# # path = '_snapshot/my-snapshot-repo/my-snapshot/_restore'# url = host + path# # payload = {"indices": "my-index"}

API 版本 2015-01-0171

Page 78: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南手动创建快照

# # headers = {"Content-Type": "application/json"}# # r = requests.post(url, auth=awsauth, json=payload, headers=headers)# # print(r.text)

Important

如果 S3 存储桶位于 us-east-1 区域,您需要使用 "endpoint": "s3.amazonaws.com" 而不是"region": "us-east-1"。

手动创建快照在创建快照时指定两项信息:

• 快照存储库的名称• 快照名称

为了方便和简洁起见,本章中的示例使用 curl,这是一种常见的 HTTP 客户端。但是,如果您的访问策略指定 IAM 用户或角色,您必须对快照请求进行签名。您可以使用示例 Python 客户端 (p. 70)中的带注释示例将签名 HTTP 请求置于 curl 命令使用的同一终端节点。

手动创建快照

• 运行以下命令来手动创建快照:

curl -XPUT 'elasticsearch-domain-endpoint/_snapshot/repository/snapshot-name'

Note

创建快照所需的时间会随着 Amazon ES 域大小的增长而增加。长时间运行的快照操作通常会遇到以下错误:504 GATEWAY_TIMEOUT。通常情况下,您可以忽略这些错误并等待操作成功完成。使用以下命令验证您的域中所有快照的状态:

curl -XGET 'elasticsearch-domain-endpoint/_snapshot/repository/_all?pretty'

有关您在拍摄快照时可用的选项的更多信息,请参阅 Elasticsearch 文档中的快照和还原。

还原快照要还原快照,请执行以下步骤:

1. 确定要还原的快照。要查看所有快照存储库,请运行以下命令:

curl -XGET 'elasticsearch-domain-endpoint/_snapshot?pretty'

在确定存储库后,您可以运行以下命令查看所有快照:

curl -XGET 'elasticsearch-domain-endpoint/_snapshot/repository/_all?pretty'

API 版本 2015-01-0172

Page 79: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南还原快照

Note

大多数自动快照存储在 cs-automated 存储库中。如果您的域对静态数据进行加密,这些快照将存储在 cs-automated-enc 存储库中。如果您没有看到要查找的手动快照存储库,请确保您已向域注册 (p. 70)该存储库。

2. 删除或重命名 Amazon ES 域中所有打开的索引。

您不能将索引的快照还原到已包含同名索引的 Elasticsearch 群集。Amazon ES 目前不支持Elasticsearch _close API,因此,您必须使用以下备选项之一:

• 删除同一个 Amazon ES 域中的索引,然后还原快照。• 将快照还原到另一个 Amazon ES 域 (只能通过手动快照实现).

以下示例演示如何删除域的所有 现有索引:

curl -XDELETE 'elasticsearch-domain-endpoint/_all'

但如果您不打算还原所有索引,则可能需要仅删除一个索引:

curl -XDELETE 'elasticsearch-domain-endpoint/index-name'

3. 要还原快照,请运行以下命令:

curl -XPOST 'elasticsearch-domain-endpoint/_snapshot/repository/snapshot/_restore'

由于 .kibana 索引上的特殊权限,尝试还原所有索引可能会失败,尤其是当您尝试从自动快照还原时。以下示例通过 cs-automated 快照存储库中的 2017-snapshot 来只还原一个索引 my-index:

curl -XPOST 'elasticsearch-domain-endpoint/_snapshot/cs-automated/2017-snapshot/_restore' -d '{"indices": "my-index"}' -H 'Content-Type: application/json'

有关仅从快照还原特定索引的更多信息,请参阅 Elasticsearch 文档中的快照和还原。

Note

如果并非所有主分片都适用于涉及的索引,则快照的 state 可能为 PARTIAL。此值表示未成功存储至少一个分片中的数据。您仍可以从部分快照进行还原,但可能需要使用较旧的快照来还原任何缺失的索引。

API 版本 2015-01-0173

Page 80: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南

迁移到不同的 Elasticsearch 版本下表显示了如何将您的数据迁移到更新的 Elasticsearch 版本。大多数步骤要求您创建和还原手动索引快照。要了解有关此过程的更多信息,请参阅使用索引快照 (p. 68)。

迁移到更新的 Elasticsearch 版本还需要创建新域。要了解更多信息,请参阅“创建和配置 Amazon ES域 (p. 12)”。

源版本 目标版本 迁移过程

6.0 6.2 1. 创建 6.0 域的手动快照。2. 创建 6.2 域。3. 将快照从 6.0 域还原到 6.2 域。4. 如果您不再需要 6.0 域,请将其删除。否则,您仍需为该域

付费。

5.x 6.x 1. 请查看 6.0 中的突破性更改以了解是否需要对索引或应用程序做出调整。

Important

在版本 6.x 中创建的索引不再支持多个映射类型。在版本 5.x 中创建的索引仍支持在还原到 6.x 群集时的多个映射类型。如果您使用 Amazon Kinesis Firehose 或 AmazonCloudWatch Logs 等服务将数据流式传输至Amazon ES,请在迁移前检查这些服务是否支持Elasticsearch 6.x。如果您使用的是 AWS Lambda,请检查您的代码是否仅为每个索引创建一个映射类型。

2. 创建 5 的手动快照。x 域。3. 创建一个 6.x 域。4. 将快照从原始域还原到 6.x 域。5. 如果您不再需要您的 5.x 域,请删除它。否则,您仍需为该

域付费。

5.1 或 5.3 5.5 1. 创建 5.1 域或 5.3 域的手动快照。2. 创建 5.5 域。3. 将快照从原始域还原到 5.5 域。4. 如果您不再需要您的原始域,请将其删除。否则,您仍需为

该域付费。

2.3 6.x Elasticsearch 2.3 快照与 6.x. 要直接将数据从 2.3 域迁移到 6.x,您必须在新域中手动重新创建索引。

或者,您也可以执行本表中的步骤 2.3 至 5.x,执行 _reindex操作 (在新的 5.x 域中) 以将您的 2.3 索引转换为 5.x 索引,然后执行 5.x 到 6.x 的步骤。

2.3 5.x 1. 在 Elasticsearch 文档中查看 5.0 中的重大更改,了解您是否需要调整索引或应用程序。

API 版本 2015-01-0174

Page 81: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南

源版本 目标版本 迁移过程

Note

Elasticsearch 迁移插件当前不可用。2. 创建 2.3 域的手动快照。3. 创建一个 5.x 域。4. 将快照从 2.3 域还原到 5.x 域。5. 如果您不再需要 2.3 域,请将其删除。否则,您仍需为该域

付费。

1.5 5.x Elasticsearch 1.5 快照与 5.x. 要将数据从 1.5 域迁移到 5.x ,您必须在新域中手动重新创建索引。

Important

1.5 快照与 2.3 兼容,但 Amazon ES 2.3 域不支持_reindex 操作。由于您无法为它们重新编制索引,因此 1.5 域中发出的索引仍无法从 2.3 快照还原到 5.x域。

1.5 2.3 1. 使用 _plugin/migration Elasticsearch 插件了解您能否直接升级到 2.3 版。您可能需要更改您的数据,然后再迁移。a. 在 Web 浏览器中,打开 http://domain_endpoint/

_plugin/migration/。b. 选择 Run checks now。c. 检查结果,如果需要,按照说明更改您的数据。有关更多

信息,请参阅 Elasticsearch 重大更改。2. 创建 1.5 域的手动快照。3. 创建 2.3 域。4. 将快照从 1.5 域还原到 2.3 域。5. 如果您不再需要 1.5 域,请将其删除。否则,您仍需为该域

付费。

API 版本 2015-01-0175

Page 82: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南Kibana

Kibana 和 Logstash本章介绍将 Kibana 和 Logstash 与 Amazon ES 结合使用的注意事项。

主题• Kibana (p. 76)• 使用 Logstash 插件加载批量数据 (p. 79)

KibanaKibana 是一种流行的开源虚拟化工具,专为与 Elasticsearch 结合使用而设计。Amazon ElasticsearchService (Amazon ES) 为每个 Amazon ES 域默认安装 Kibana。在 Amazon ES 控制台域控制面板上可以找到 Kibana 链接。URL 为 https://domain.region.es.amazonaws.com/_plugin/kibana/。对此默认 Kibana 安装的查询具有 60 秒超时。

有关使用 Kibana 可视化数据的信息,请参阅 Kibana 用户指南。

Note

要阻止对 Kibana 的公开访问,您必须配置基于 IP 的访问策略。Kibana 的默认安装目前不支持 IAM用户身份验证。要了解有关基于 IP 的访问策略的更多信息,请参阅配置访问策略 (p. 21)。

下面几节介绍一些常见 Kibana 使用案例:

• the section called “使用代理从 Kibana 访问 Amazon ES” (p. 76)• the section called “将 Kibana 配置为使用 WMS 地图服务器” (p. 78)• the section called “将本地 Kibana 服务器连接到 Amazon ES” (p. 78)

使用代理从 Kibana 访问 Amazon ESKibana 是 JavaScript 应用程序,因此请求源自用户的 IP 地址。基于 IP、无身份验证的访问控制可能是不切实际的,这是因为,为了让每个用户能够访问 Kibana,需要加入白名单的 IP 地址绝对数量太巨大。一种解决方案是在 Kibana 和 Amazon ES 之间配置一个代理服务器。然后,您可以添加基于 IP 的访问策略,仅允许来自一个 IP 地址 (即代理服务器) 的请求。下图显示了这种配置。

API 版本 2015-01-0176

Page 83: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南使用代理从 Kibana 访问 Amazon ES

1. 这是您的 Amazon ES 域。IAM 提供对此域的授权访问权限。此外,基于 IP 的访问策略提供对代理服务器的访问权限。

2. 这是代理服务器,位于 VPC 子网中,在 Amazon EC2 实例上运行。3. 在 EC2 实例上运行的其他应用程序可以使用签名版本 4 的签名流程将通过身份验证的请求发送

到 Amazon ES。有关向 Amazon ES 发出签名请求的示例代码,请参阅the section called “编程索引” (p. 55)。

4. Kibana 客户端通过代理连接到 Amazon ES 域。

要启用这种配置,需要在基于资源的策略中指定角色和 IP 地址。下面是示例策略:

{ "Version": "2012-10-17", "Statement": [ { "Resource": "arn:aws:es:us-west-2:111111111111:domain/recipes1/analytics", "Principal": { "AWS": "arn:aws:iam::111111111111:role/allowedrole1" }, "Action": [ "es:ESHttpGet" ], "Effect": "Allow"

API 版本 2015-01-0177

Page 84: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南将 Kibana 配置为使用 WMS 地图服务器

}, { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:*", "Condition": { "IpAddress": { "aws:SourceIp": [ "123.456.789.123" ] } }, "Resource": "arn:aws:es:us-west-2:111111111111:domain/recipes1/analytics" } ]}

建议使用弹性 IP 地址配置在代理服务器上运行的 EC2 实例。这样,如果有必要替换实例,仍然可以用相同的公有 IP 地址连接到实例。要了解更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的弹性 IP 地址。

将 Kibana 配置为使用 WMS 地图服务器由于许可限制,使用 Elasticsearch 5.x 或更高版本的 Amazon ES 域上的 Kibana 默认安装不 包括用于磁贴地图可视化的地图服务器。使用以下过程将 Kibana 配置为使用 Web Map Service (WMS) 地图服务器。

将 Kibana 配置为使用 WMS 地图服务器:

1. 打开 Kibana。您可以在 https://console.aws.amazon.com/es/ 处的域摘要中找到指向 Kibana 的链接。2. 选择 Management。3. 选择 Advanced Settings。4. 找到 visualization:tileMap:WMSdefaults,然后选择 edit 按钮以修改默认值。5. 将 enabled 更改为 true 并将 url 更改为有效 WMS 地图服务器的 URL。6. (可选) 找到 visualization:tileMap:WMSdefaults,然后选择 edit 按钮以修改默认值。7. (可选) 将 "layers": "0" 更改为要显示的地图图层的逗号分隔列表。图层因地图服务而异。默认值为

0 通常是合适的。8. 选择 save 按钮。

要将新的默认值应用于可视化,您可能需要重新加载 Kibana。Note

地图服务通常具有许可费用或限制。您负责考虑有关指定的任何地图服务器的所有此类事项。您可能会发现来自美国地质调查局的地图服务对测试非常有用。

将本地 Kibana 服务器连接到 Amazon ES如果您已投入大量时间来配置自己的 Kibana 实例,则可以使用该实例而不是 (或以及) Amazon ES 提供的默认 Kibana 实例。

将本地 Kibana 服务器连接到 Amazon ES:

• 对 config/kibana.yml 进行以下更改:

kibana_index: ".kibana-5"

API 版本 2015-01-0178

Page 85: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南使用 Logstash 插件加载批量数据

elasticsearch_url: "http://elasticsearch_domain_endpoint:80"

您必须使用 http 前缀并显式指定端口 80。

使用 Logstash 插件加载批量数据Logstash 提供一种便捷的方式,通过 S3 插件使用批量 API 来上传数据到您的 Amazon ES 域。该服务还支持 Elasticsearch 提供的其他所有标准 Logstash 输入插件。Amazon ES 还支持两种 Logstash 输出插件:标准 Elasticsearch 插件和向 Amazon ES 签署和导出 Logstash 事件的 logstash-output-amazon-es 插件。

您必须安装自己的 Logstash 本地实例,并在 Logstash 配置文件中进行以下更改,从而启用与 Amazon ES的交互。

配置字段 输入 | 输出插件 描述

bucket Input 指定包含您要加载到 Amazon ES 域的数据的 AmazonS3 存储桶。您可以在 Amazon Elasticsearch Service 控制台控制面板中找到此服务终端节点。

region 输入 指定 Amazon S3 存储桶所在的 AWS 区域。

hosts 输出 指定目标 Amazon ES 域的服务终端节点。

ssl 输出 指定是否使用 SSL 连接到 Amazon ES。

flush_size 输出 默认情况下,Logstash 在向前发送整批之前,先用 5000个事件填充缓冲区。但是,如果您的文档很大,大小接近 100 MB,我们建议您将 flush_size 选项配置为更大的值,以防缓冲区填充太快。

如果您增加 flush_size,我们建议您同时将 LogstashLS_HEAP_SIZE 环境变量设为 2048 MB,以防止耗尽内存。

有关更多信息,请参阅 Elasticsearch 文档中的flush_size。

此示例将 Logstash 配置为执行以下操作:

• 将输出插件指向 Amazon ES 终端节点• 指向 S3 中 wikipedia-stats-log 存储桶的输入插件• 使用 SSL 连接到 Amazon ES

input{ s3 { bucket => "wikipedia-stats-log" access_key_id => "lizards" secret_access_key => "lollipops" region => "us-east-1" }}output{ elasticsearch { hosts => "search-logs-demo0-cpxczkdpi4bkb4c44g3csyln5a.us-east-1.es.example.com"

API 版本 2015-01-0179

Page 86: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南使用 Logstash 插件加载批量数据

ssl => true flush_size => 250000 }}

以下示例演示了相同的配置,但不使用 SSL 连接到 Amazon ES:

input{ s3 { bucket => "wikipedia-stats-log" access_key_id => "lizards" secret_access_key => "lollipops" region => "us-east-1" }}output{ elasticsearch { hosts => "search-logs-demo0-cpxczkdpi4bkb4c44g3csyln5a.us-east-1.es.example.com" ssl => false flush_size => 250000 }}

Note

上述示例中的服务请求必须进行签名。有关签署请求的更多信息,请参阅the section called “签署Amazon ES 请求” (p. 32)。使用 logstash-output-amazon-es 输出插件向 Amazon ES签署和导出Logstash 事件。有关说明,请参阅 README.md.

API 版本 2015-01-0180

Page 87: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南调整 Amazon ES 域大小

Amazon Elasticsearch Service 最佳实践

以下主题介绍了一些操作 Amazon Elasticsearch Service 域的注意事项并提供了适用于许多使用案例的一般准则。

主题• 调整 Amazon ES 域大小 (p. 81)• 专用主节点 (p. 83)• 建议的 CloudWatch 警报 (p. 85)

调整 Amazon ES 域大小调整 Amazon ES 域大小不存在一定成功的方法,但通过首先了解您的存储需求、服务和 Elasticsearch 本身,您可以对您的硬件需求作出明智的初步估计。此估计可以作为调整域大小的大多数关键方面的有用起始点:用代表性工作负载测试它们并监控其性能。

主题• 计算存储要求 (p. 81)• 选择分片数量 (p. 82)• 选择实例类型和测试 (p. 82)

计算存储要求大多数 Elasticsearch 工作负载分为两大类:

• 长期有效的索引:您编写代码,以将数据处理为一个或多个 Elasticsearch 索引,然后随着源数据的更改而定期更新这些索引。一些常见示例为网站、文档和电子商务搜索。

• 滚动索引:数据持续流入一组具有索引周期和保留时间的临时索引,例如一组将保留 2 周的每日索引。一些常见示例是日志分析、时间序列处理和点击流分析。

对于长期有效的索引工作负载,您可以检查磁盘上的源数据并轻松确定它使用的存储空间。如果数据来自多个来源,只需一起添加这些来源。

对于滚动索引,您可以将代表性时间周期内生成的数据量乘以保留周期。例如,如果您每小时生成 200 MB日志数据,即每天 4.8 GB,如果您的保留周期为 2 周,则任何给定时间的数据均为 67 GB。

但是,您的源数据的大小只是您的存储要求的一个方面。您还必须考虑以下方面:

1. 副本数量:每个副本都是一个索引的完整复制,需要同等量的磁盘空间。默认情况下,每个 Elasticsearch索引都有一个副本。我们建议至少有一个,以防止数据丢失。副本还可以提高搜索性能,因此如果您有需要进行大量读取操作的工作负载,则可能需要更多副本。

2. Elasticsearch 索引开销:索引的磁盘大小各有不同,但通常比源数据大 10%。为您的数据编制索引后,您可以使用 _cat/indices API 和 pri.store.size 值计算准确的开销。_cat/allocation API 还提供了一个有用的摘要。

3. 操作系统预留空间:默认情况下,Linux 将保留 5% 的文件系统供 root 用户处理关键流程、进行系统恢复和防止磁盘碎片问题。

API 版本 2015-01-0181

Page 88: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南选择分片数量

4. Amazon ES 开销:Amazon ES 在每个实例中为分段合并、日志和其他内部操作保留 20% 的存储空间 (最多可达 20 GB)。

由于这个 20 GB 的最大值,预留空间的总量可能会相差悬殊,这具体取决于您的域中的实例数量。例如,某个域可能有三个 m4.xlarge.elasticsearch 实例,每个实例的存储空间为 500GB,总存储空间为 1.5 TB。在这种情况下,只有 60 GB 的总预留空间。另一个域可能有 10 个m3.medium.elasticsearch 实例,每个实例的存储空间为 100 GB,总存储空间为 1 TB。在这里,总预留空间为 200 GB,即使第一个域大 50%。

在以下公式中,我们对开销应用“最糟糕的情况”估计,此估计对每个实例的存储空间小于 100 GB 的域是准确的,但对更大的实例则是过度分配。

总之,如果您在任何给定的时间有 67 GB 的数据并且需要一个副本,则最低 存储要求更接近 67 * 2 * 1.1 /0.95 / 0.8 = 194 GB。您可以将此计算一般化,如下所示:

源数据 * (1 + 副本数量) * (1 + 索引开销) / (1 - Linux 预留空间) / (1 - Amazon ES 开销) = 最小存储要求

或者,您可以使用此简化版本:

源数据 * (1 + 副本数量) * 1.45 = 最小存储要求

存储空间不足是群集不稳定的最常见原因之一,因此在选择实例类型、实例计数和存储卷 (p. 82)时,您应反复检查数量。

Note

如果您的最小存储要求超过 1 PB,请参阅 PB 规模 (p. 87)。

选择分片数量在您了解存储要求后,便可以调查您的索引策略。每个 Elasticsearch 索引分为一些分片数量。由于您无法更改现有索引的主分片的数量,在为您的第一个文档添加索引之前,您应决定分片计数。

选择分片数量的总体目标是跨群集中的所有数据节点均匀分配索引。但是,这些分片不应该太大或太多。尝试保持介于 10 GB 和 50 GB 之间的分片大小是一个好方法。大型分片可能使 Elasticsearch 难以从故障中恢复,但因为每个分片使用一些数量的 CPU 和内存,拥有太多小型分片可能会导致性能问题和内存不足的错误。换句话说,分片应足够小,以便底层 Amazon ES 实例可以处理它们,但又不能太小,以免对硬件造成不必要的压力。

例如,假设您有 67 GB 的数据。您不希望该数字随着时间的推移而增加,您希望将每个分片保持在 30 GB左右。因此,您的分片数量应大约为 67 * 1.1/30 = 3。您可以将此计算一般化,如下所示:

(元数据 + 增长空间) * (1 + 索引开销) / 所需的分片大小 = 主分片的大约数量

此等式可帮助补偿今后的增长。如果您预计这相同的 67 GB 数据将在下一年增长到原来的四倍,则分片的数量大约为 (67 + 201) * 1.1/30 = 10。但是,请记住,您还没有 这额外的 201 GB 数据。检查以确保为未来所做的这一准备不会创建在现在消耗大量 CPU 和内存的不必要的微小分片。在这种情况下,67 * 1.1/10 分片= 7.4 GB /分片,将消耗额外的资源且小于建议的大小范围。您可能会考虑 6 个分片的更折中方法,这种方法为您留下了今天的 12 GB 分片和未来的 49 GB 分片。而且,您可能更愿意从 3 个 30 GB 的分片开始且在分片超过 50 GB 时为您的数据重新编制索引。

Note

默认情况下,Elasticsearch 索引拆分为 5 个主分片。在创建索引 (p. 54)时,您可以指定不同的设置。

选择实例类型和测试当您计算存储要求并选择您需要的分片数量后,您可以开始进行硬件决策。硬件要求可能因工作负载而差异悬殊,但我们仍然可以提供一些基本建议。

API 版本 2015-01-0182

Page 89: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南专用主节点

一般而言,每个实例类型的存储限制 (p. 156)映射到轻型工作负载可能需要的 CPU 和内存量。例如,某个m4.large.elasticsearch 实例的最大 EBS 卷大小为 512 GB,该实例具有 2 个 vCPU 核心和 8 GB 内存。如果您的群集有许多分片,需要执行税收聚合、频繁更新文档或处理大量查询,则这些资源可能不足以满足您的需求。如果您认为您的群集属于其中一个类别,请尝试从每 100 GB 存储要求更接近 2 个 vCPU 核心和 8 GB 内存的配置开始。

Tip

有关分配给每个实例类型的硬件资源的摘要,请参阅 Amazon Elasticsearch Service 定价。

但是,即使这些资源也可能不足。某些 Elasticsearch 用户报告称他们需要这些资源的许多倍才能满足要求。为您的工作负载找到合适的硬件意味着进行明智的初步估计、使用代表性工作负载进行测试、调整并再次测试:

1. 若要开始,我们建议最少三个实例,以避免潜在的 Elasticsearch 问题,例如分裂大脑问题。如果您有三个专用主节点 (p. 83),我们仍建议至少将两个数据节点用于复制。

2. 如果您的存储要求为 184 GB 而建议的最小实例数量为三个,则可以使用等式 184/3 = 61 GB 来找到每个实例需要的存储量。在本示例中,您可以为您的群集选择三个 m3.medium.elasticsearch 实例,每个实例使用一个 90 GB 的 EBS 存储卷,以便您有一个安全网和一些随着时间增长的空间。此配置提供了 3个 vCPU 核心和 12 GB 内存,因此适合更轻型的工作负载。

有关更具体的示例,请考虑 14 TB 存储要求和重型工作负载。在这种情况下,您可能会选择从 2 * 140 = 280 个 vCPU 核心和 8 * 140 = 1120 GB 内存开始测试。这些数量计为约 18 个m4.4xlarge.elasticsearch 实例,每个实例使用一个 900 GB 的 EBS 存储卷。

3. 配置群集后,您可以添加索引 (p. 54)、使用真实数据集执行一些代表性客户端测试,并监控 CloudWatch指标 (p. 42)以查看群集如何处理工作负载。

4. 如果性能满足您的需求、测试成功且 CloudWatch 指标正常,则群集便可以使用了。请记住设置CloudWatch 警报 (p. 85)以检测运行状况不佳的资源使用情况。

如果性能不可接受、测试失败,或者 CPUUtilization 或 JVMMemoryPressure 很高,则您可能需要选择其他实例类型 (或添加实例) 并继续测试。随着您添加实例,Elasticsearch 会自动重新平衡分片在整个群集中的分配。

因为在动力过剩的群集中测量超额容量比在动力不足的群集中测量容量不足更简单,所以我们建议从比您认为您需要的更大的群集开始,然后缩减至具有足以确保稳定操作的资源的群集。

生产群集或具有复杂状态的群集可从专用主节点 (p. 83)中受益,从而提高性能和群集可靠性。

专用主节点Amazon Elasticsearch Service 使用专用主节点 来提高群集稳定性。专用主节点执行群集管理任务,但不保留数据也不响应数据上传请求。此群集管理任务的卸载可增加您的域的稳定性。

我们建议您为每个生产 Amazon ES 域分配三个专用主节点:

1. 一个专用主节点意味着您在发生故障时没有备份。2. 两个专用主节点意味着您的群集没有必需的节点法定数,无法在发生故障时选择新的主节点。

法定数是专用主节点数/2 + 1 (向下舍入到最近的整数),当您创建域时,Amazon ES 将其设置为discovery.zen.minimum_master_nodes。

在这种情况下,2/2 + 1 = 2。由于一个专用主节点发生了故障且仅存在一个备份,则群集没有法定数且无法选择新的主节点。

3. 三个专用主节点 (建议的数量) 可在主节点发生故障时提供两个备份节点和必要的法定数 (2) 来选择新主节点。

4. 四个专用主节点不比三个主节点好,而且可能在您使用区域感知 (p. 41)时导致问题。

API 版本 2015-01-0183

Page 90: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南专用主节点

• 如果一个主节点发生故障,您有选择新主节点的法定数 (3)。如果两个节点发生故障,则您会失去该法定数,正如您具有三个专用主节点时一样。

• 如果每个可用区有两个专用主节点且各区域之间无法相互通信,则任何一个区域都没有用于选择新主节点的法定数。

5. 拥有五个专用主节点和拥有三个一样,可让您在失去两个节点的情况下保持法定数,但因为任何给定的时间都仅有一个专用主节点处于活动状态,所以此配置意味着要为四个空闲节点付费。许多客户发现,这一级别的故障转移保护有些过剩。

专用主节点执行以下群集管理任务:

• 跟踪群集中的所有节点• 跟踪群集中的索引数量• 跟踪属于每个索引的分片数量• 维护群集中节点的路由信息• 在状态更新后更新群集状态,如在群集中创建索引和添加或移除节点• 在群集中的所有节点之间复制群集状态的更改• 通过发送心跳信号 (监控群集中数据节点可用性的周期信号) 来监控所有群集节点的运行状况

下图显示包含十个实例的 Amazon ES 域。七个实例是数据节点,三个是专用主节点。只有一个专用主节点处于活动状态,另外两个灰色专用主节点作为备份,以防活动的专用主节点发生故障。所有数据上传请求由七个数据节点提供,并且所有群集管理任务均卸载到活动的专用主节点。

API 版本 2015-01-0184

Page 91: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南建议的 CloudWatch 警报

虽然专用主节点不处理搜索和查询请求,但它们的大小与其管理的实例、索引和分片数量高度相关联。对于生产群集,我们建议专用主节点采用以下实例类型。这些建议基于典型工作负载,可能根据您的需求而有所不同。

实例数量 推荐的最小专用主实例类型

5–10 m3.medium.elasticsearch

10–20 m4.large.elasticsearch

20–50 c4.xlarge.elasticsearch

50–100 c4.2xlarge.elasticsearch

• 对于大型群集的专用主节点建议,请参阅 PB 规模 (p. 87)。• 有关特定配置更改如何影响专用主节点的信息,请参阅the section called “关于配置更改” (p. 40)。• 有关说明实例计数限制的澄清,请参阅the section called “群集和实例限制” (p. 156)。• 有关特定实例类型的更多信息,包括 vCPU、内存和定价,请参阅 Amazon Elasticsearch 实例价格。

建议的 CloudWatch 警报当一段时间内 CloudWatch 指标超出指定的值时,CloudWatch 警报将会执行某个操作。例如,您可能希望AWS 在群集运行状况状态为 red 的时间超过 1 分钟时向您发送电子邮件。本部分包括一些建议警报及其响应方式。

有关设置警报的更多信息,请参阅 Amazon CloudWatch 用户指南 中的创建 Amazon CloudWatch 警报。

警报 问题

ClusterStatus.red最大值 >= 1 达到 1 分钟,1 次连续时间

至少有一个主分片其及副本未分配给节点。请参阅 the section called “红色群集状态” (p. 96)。

ClusterStatus.yellow最大值 >= 1 达到 1 分钟,1 次连续时间

至少有一个副本分片未分配给节点。请参阅 the section called “黄色群集状态” (p. 98)。

FreeStorageSpace 最小值 <= 50000 达到 1 分钟,1 次连续时间

您的群集已降至 50 GB 的可用存储空间。请参阅the section called “缺少可用存储空间” (p. 98)。此值以 MB 为单位,因此我们建议将其设置为总存储容量的 25%,而不是 50000。

ClusterIndexWritesBlocked>= 1 达到 1 分钟,1 次连续时间

您的群集正在阻止写入请求。请参阅 the section called“ClusterBlockException” (p. 98)。

Nodes 最小值 < x 达到 1天,1 次连续时间

x 您的群集中的节点数。此警报表示您的群集中至少有一个节点无法访问的时间已达到一天。请参阅 the section called “群集节点失败” (p. 96)。

AutomatedSnapshotFailure最大值 >= 1 达到 1 分钟,1 次连续时间

自动快照失败。此故障通常由红色群集运行状况导致。请参阅 the sectioncalled “红色群集状态” (p. 96)。

有关所有自动快照的摘要和一些有关故障的信息,您也可以尝试以下操作:

GET domain_endpoint/_snapshot/cs-automated/_all

API 版本 2015-01-0185

Page 92: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南建议的 CloudWatch 警报

警报 问题

CPUUtilization 平均值 >= 80% 达到 15 分钟,3 次连续时间

100% CPU 利用率不常见,但是持续的 高平均值是有问题的。考虑使用更大的实例类型或添加实例。

JVMMemoryPressure最大值 >= 80% 达到 15分钟,1 次连续时间

如果使用量增加,群集可能会遇到内存不足错误。请考虑垂直扩展。AmazonES 将实例的 RAM 的一半用于 Java 堆,最大堆大小为 32 GB。您最多可以将实例的 RAM 垂直扩展至 64 GB,此时可以通过添加实例水平扩展。

MasterCPUUtilization平均值 >= 50% 达到 15分钟,3 次连续时间

MasterJVMMemoryPressure>= 80% 达到 15 分钟,1次连续时间

考虑将更大的实例类型用于您的专用主节点 (p. 83)。由于其在群集稳定性和蓝/绿部署 (p. 40)中的作用,专用主节点的平均 CPU 使用率应比数据节点低。

KMSKeyError >= 1 达到1 分钟,1 次连续时间

用于在您的域中加密静态数据的 KMS 加密密钥已禁用。重新启用它可恢复正常操作。要了解更多信息,请参阅“静态加密 (p. 94)”。

KMSKeyInaccessible>= 1 达到 1 分钟,1 次连续时间

用于在您的域中加密静态数据的 KMS 加密密钥已被删除或已撤销其对Amazon ES 的授权。您无法恢复处于此状态的域,但如果您有一个手动快照,则可以用它来迁移至新的域。要了解更多信息,请参阅“静态加密 (p. 94)”。

Note

如果您只想查看 指标,请参阅监控 CloudWatch 指标 (p. 42)。

API 版本 2015-01-0186

Page 93: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南

Amazon Elasticsearch Service 的 PB规模

Amazon Elasticsearch Service 提供了高达 1.5 PB 的域存储空间。您可以配置包含 100 个i3.16xlarge.elasticsearch 实例类型的域,每个实例类型都有 15 TB 的存储空间。由于规模上的显著差异,针对此大小的域的建议不同于我们的一般建议 (p. 81)。本节讨论创建域、成本、存储空间、分片大小和专用主节点的注意事项。尽管频繁引用了 i3 实例类型,但本节中的分片和专用主节点建议适用于即将达到 PB 规模的任何域。

创建域

此大小的域超出了每个域 20 个实例的默认限制。要请求将服务限制提升到每个域最多 100 个实例,请在 AWS 支持中心上打开一个案例。

定价

在创建此大小的域之前,请查看 Amazon Elasticsearch 服务定价页面以确保相关成本符合您的预期。存储

i3 实例类型专门设计用于提供快速、本地的非易失性存储规范 (NVMe) 存储空间。由于此本地存储与Amazon Elastic Block Store 相比往往具有巨大的性能优势,当您在 Amazon ES 中选择这些实例类型时,EBS 卷不是合适的选项。

分片大小

常用 Elasticsearch 准则是不超过每个分片 50 GB。考虑到满足 1.5 PB 的存储要求所需的分片数,我们建议分片大小至少为 100 GB。

例如,如果您有 450 TB 的源数据并且需要一个副本,您的最低存储要求更接近 450 TB * 2 * 1.1/0.95 =1.04 PB。有关此计算的说明,请参阅the section called “计算存储要求” (p. 81)。尽管 1.04 PB/15 TB =70 个实例,但您可以选择 77 个或更多 i3.16xlarge.elasticsearch 实例来为自己提供存储安全网和账户,从而适应数据量随着时间的推移发生的变化。每个实例都会将存储需求下限增加 20 GB,但对于这个规模的磁盘而言,20 GB 几乎可以忽略不计。

要计算主分片的数量,请使用以下公式:450,000 GB * 1.1/每个分片 150 GB = 3,300 个分片。与往常一样,对您的域进行大小调整和配置的最重要的步骤是使用真实的数据集执行有代表性的客户端测试。

专用主节点

我们建议您向每个生产 Amazon ES 域分配三个专用主节点。尽管我们有专用主节点的常用准则 (p. 83),但是,我们建议对此大小的域使用更强大的实例类型。下表显示了适用于大型域的专用主节点的推荐实例类型。

实例数量 推荐的最小专用主实例类型

5–10 m4.large.elasticsearch

10–20 c4.xlarge.elasticsearch

20–50 c4.2xlarge.elasticsearch

50–100 c4.4xlarge.elasticsearch

API 版本 2015-01-0187

Page 94: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南

Amazon Elasticsearch Service 域的VPC 支持

Virtual Private Cloud (VPC) 是专用于您的 AWS 账户的虚拟网络。 它在逻辑上与 AWS 云中的其他虚拟网络隔绝。您可以在 VPC 中启动 AWS 资源 (如 Amazon ES 域)。

在 VPC 中放置 Amazon ES 域可以在 Amazon ES 和 VPC 中的其他服务之间进行安全通信,而无需 Internet网关、NAT 设备或 VPN 连接。AWS 云中的所有流量都会保持安全。由于进行了逻辑隔离,与使用公共终端节点的域相比,驻留在 VPC 中的域有一层额外的安全性。

为了支持 VPC,Amazon ES 将一个终端节点放入您的 VPC 的一个或两个子网中。子网是您的 VPC 内的 IP地址范围。如果您为域启用了区域感知 (p. 41),则 Amazon ES 将终端节点放入两个子网中。两个子网必须位于同一区域的不同可用区中。如果您没有启用区域感知,则 Amazon ES 只将终端节点放在一个子网中。

下图显示了未启用区域感知时的 VPC 架构。

下图显示了启用区域感知时的 VPC 架构。

API 版本 2015-01-0188

Page 95: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南

Amazon ES 还会为您的每个数据节点将一个弹性网络接口 (ENI) 放入 VPC 中。Amazon ES 会为每个 ENI分配一个来自您的子网的 IPv4 地址范围的私有 IP 地址。该服务还会分配这些 IP 地址的公有 DNS 主机名(域终端节点)。您必须使用公共 DNS 服务将终端节点 (DNS 主机名) 解析为数据节点的相应 IP 地址:

• 如果您的 VPC 通过将 enableDnsSupport 选项设置为 true (默认值) 来使用 Amazon 提供的 DNS 服务器,则 Amazon ES 终端节点的解析将会成功。

• 如果您的 VPC 使用私有 DNS 服务器,并且该服务器可以访问公共权威 DNS 服务器来解析 DNS 主机名,则 Amazon ES 终端节点的解析也会成功。

因为 IP 地址可能会发生更改,所以您应定期解析域终端节点,以便可以始终访问正确的数据节点。我们建议您将 DNS 解析时间间隔设置为一分钟。如果您在使用客户端,还应确保客户端中的 DNS 缓存已清除。

Note

Amazon ES 不支持对 VPC 使用 IPv6 地址。您可以使用启用了 IPv6 的 VPC,但域将使用 IPv4 地址。

主题• 限制 (p. 90)• 关于 VPC 域的访问策略 (p. 90)• 开始之前:VPC 访问的先决条件 (p. 91)• 正在创建 VPC (p. 91)• 在 VPC 子网中预留 IP 地址 (p. 92)

API 版本 2015-01-0189

Page 96: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南限制

• VPC 访问的服务相关角色 (p. 93)• 从公有访问迁移到 VPC 访问 (p. 93)• Amazon VPC 文档 (p. 93)

限制目前,在 VPC 中运行 Amazon ES 域存在以下限制:

• 可以在 VPC 中启动域,也可以使用公共终端节点,但两者不能同时进行。在创建域时只能选择其一。• 如果在 VPC 中启动了新域,以后就不能将其切换为使用公共终端节点。反过来也是如此:如果使用公共终

端节点创建了域,则以后就不能将该域放入 VPC 中,而是必须创建一个新的域,然后迁移数据。• 您无法在使用专用租赁的 VPC 内启动您的域。您必须使用具有设置为 Default 的租赁的 VPC。• 将域放入一个 VPC 中后,不能再将其移到其他 VPC 中。不过,可以更改子网和安全组设置。• 与公共域相比,VPC 域在 Amazon ES 控制台中显示的信息较少。具体而言,Cluster health 选项卡中不包

含分片信息;不存在 Indices 选项卡。• 目前,对于驻留在 VPC 中的域,Amazon ES 不支持与 Amazon Kinesis Data Firehose 集成。要将此服务

与 Amazon ES 一起使用,您必须使用具有公共访问权限的域。• 要访问驻留在某个 VPC 中的域的默认 Kibana 安装,用户必须具有访问该 VPC 的权限。此过程因网络配

置而异,但可能涉及连接到 VPN 或托管网络或使用代理服务器。有关更多信息,请参阅the section called“关于 VPC 域的访问策略” (p. 90)、Amazon VPC 用户指南和the section called “使用代理从 Kibana 访问 Amazon ES” (p. 76)。

关于 VPC 域的访问策略在 VPC 中放置 Amazon ES 域将提供一个固有的强大安全层。使用公有访问权限创建域时,终端节点将采用以下形式:

https://search-domain-name-identifier.region.es.amazonaws.com

如“公有”标签所示,此终端节点可从任何连接 Internet 的设备访问,但您可以 (且应该) 控制对它的访问 (p. 29)。如果您访问 Web 浏览器中的终端节点,您可能会收到一条 Not Authorized 消息,但请求将达到域。

当您使用 VPC 访问权限创建域时,终端节点看起来 类似于公有终端节点:

https://vpc-domain-name-identifier.region.es.amazonaws.com

但是,如果您尝试访问 Web 浏览器中的终端节点,您可能会发现请求超时。要执行更基本的 GET 请求,您的计算机必须能够连接到 VPC。此连接通常采用以下格式:Internet 网关、VPN 服务器或代理服务器。有关此连接可以采用的各种格式的详细信息,请参阅 Amazon VPC 用户指南 中的场景和示例。

除了此连接要求,VPC 还可让您通过安全组管理对域的访问。对于许多使用案例,这种安全功能的组合方式已足够,并且您可能愿意将开放访问策略应用于域。

使用开放访问策略运行并不 意味着 Internet 上的任何人都可以访问 Amazon ES 域。相反,它意味着,如果请求到达 Amazon ES 域且关联的安全组允许它,则该域将接受请求而无需进一步安全检查。

如果还需增加一层安全性,我们建议使用指定 IAM 用户或角色的访问策略。应用这些策略意味着要让域接受某个请求,安全组必须允许该请求并且必须使用有效凭证的签署该请求。

API 版本 2015-01-0190

Page 97: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南先决条件

Note

因为安全组已强制执行基于 IP 的访问策略,所以您无法将基于 IP 的访问策略应用到驻留在 VPC 中的 Amazon ES 域。如果使用公有访问权限,则基于 IP 的策略仍可用。

开始之前:VPC 访问的先决条件在启用 VPC 和新的 Amazon ES 域之间的连接之前,您必须执行以下操作:

• 创建 VPC

要创建 VPC,可以使用 Amazon VPC 控制台、AWS CLI 或 AWS 开发工具包之一。您必须在 VPC中创建一个子网,如果启用了 区域感知 (p. 41),则必须创建两个子网。有关更多信息,请参阅创建VPC (p. 91)。如果您已有 VPC,请跳过此步骤。

• 预留 IP 地址

Amazon ES 通过将网络接口放置在 VPC 的子网中来启用 VPC 到域的连接。每个网络接口都与一个 IP 地址关联。必须在子网中为网络接口预留足够数量的 IP 地址。有关更多信息,请参阅在 VPC 子网中预留 IP地址 (p. 92)。

正在创建 VPC要创建 VPC,可以使用 Amazon VPC 控制台、AWS CLI 或 AWS 开发工具包之一。VPC 必须具有一个子网,如果您启用了区域感知 (p. 41),则必须具有两个子网。两个子网必须位于同一区域的不同可用区中。

下面的过程演示了如何使用 Amazon VPC 控制台创建具有一个公有子网的 VPC、为子网保留 IP 地址以及创建安全组来控制对您的 Amazon ES 域的访问。有关其他 VPC 配置,请参阅 Amazon VPC 用户指南 中的场景和示例。

创建 VPC (控制台)

1. 登录 AWS 管理控制台,并通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/。

2. 在导航窗格中,选择 VPC Dashboard。3. 选择 Start VPC Wizard。4. 在 Select a VPC Configuration 页面上,选择 VPC with a Single Public Subnet。5. 在 VPC with a Single Public Subnet 页面上,保留默认选项,然后选择 Create VPC。6. 在出现的确认信息中,选择 Close。7. 如果您打算为 Amazon ES 域启用区域感知 (p. 41),则必须在同一区域的不同可用区创建第二个子网。

如果不打算启用区域感知,请跳到步骤 8。

a. 在导航窗格中,选择 Subnets。b. 选择 Create Subnet。c. 在 Create Subnet 对话框中,可以选择创建名称标签,以便以后帮助您识别子网。d. 对于 VPC,选择您刚才创建的 VPC。e. 对于 Availability Zone,选择与第一个子网不同的可用区。两个子网的可用区必须位于同一区域中。f. 对于 IPv4 CIDR block,配置一个足够大的 CIDR 块,以便提供足够多的 IP 地址供 Amazon ES 在

维护活动期间使用。有关更多信息,请参阅在 VPC 子网中预留 IP 地址 (p. 92)。Note

使用 VPC 访问的 Amazon ES 域不支持 IPv6 地址。您可以使用启用了 IPv6 的 VPC,但ENI 将使用 IPv4 地址。

API 版本 2015-01-0191

Page 98: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南在 VPC 子网中预留 IP 地址

g. 选择 Yes, Create。8. 在导航窗格中,选择 Subnets。9. 在子网列表中,找到您的子网 (或两个子网,如果您在步骤 7 中创建了第二个子网)。在 Available IPv4

列中,确认您有足够数量的 IPv4 地址。10. 记下子网 ID 和可用区。稍后,在您启动 Amazon ES 域并向 VPC 添加 Amazon EC2 实例时,将需要此

信息。11. 创建一个 Amazon VPC 安全组。您将使用此安全组来控制对您的 Amazon ES 域的访问。

a. 在导航窗格中,选择 Security Groups。b. 选择 Create Security Group。c. 在 Create Security Group 对话框中,键入名称标签、组名称和说明。对于 VPC,选择您的 VPC 的

ID。d. 选择 Yes, Create。

12. 为您的安全组定义一个网络入口规则。此规则允许您连接到您的 Amazon ES 域。

a. 在导航窗格中,选择 Security Groups,然后选择刚创建的安全组。b. 在页面底部,选择 Inbound Rules 选项卡。c. 选择 Edit,然后选择 HTTPS (443)。d. 选择 Save。

现在您已准备就绪,可以在 Amazon VPC 中启动 Amazon ES 域 (p. 12)了。

在 VPC 子网中预留 IP 地址Amazon ES 通过将网络接口放在 VPC 的一个子网 (如果您启用了区域感知 (p. 41),则是 VPC 的两个子网)中来将域连接到 VPC。 每个网络接口都与一个 IP 地址关联。在创建 Amazon ES 域之前,VPC 子网中必须有足够数量的 IP 地址来容纳网络接口。

Amazon ES 需要的 IP 地址数量取决于以下因素:

• 域中的数据节点数。(主节点不包括在该数量内。)• 是否启用了区域感知 (p. 41)。如果启用了区域感知,则需要的每个子网的 IP 地址数只是未启用区域感知

时的一半。

以下是基本公式:每个子网中预留的 IP 地址数是节点数的三倍,如果启用了区域感知,则除以 2。

示例

• 如果某个域有 10 个数据节点并启用了区域感知,则 IP 数为 10/2* 3 = 15。• 如果某个域有 10 个数据节点并禁用了区域感知,则 IP 数为 10 * 3 = 30。

在创建域时,Amazon ES 会预留 IP 地址。您可以在 https://console.aws.amazon.com/ec2/ 的 Amazon EC2控制台的 Network Interfaces 部分看到网络接口及其相关的 IP 地址。Description 列显示与网络接口关联的Amazon ES 域。

Tip

我们建议您为 Amazon ES 预留 IP 地址创建专用子网。通过使用专用子网,可以避免与其他应用程序和服务重叠,并确保在将来需要扩展群集时可以预留额外 IP 地址。有关更多信息,请参阅在VPC 中创建子网。

API 版本 2015-01-0192

Page 99: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南VPC 访问的服务相关角色

VPC 访问的服务相关角色服务相关角色是一种独特的 IAM 角色类型,它将权限委派给服务,使之能够代表您创建和管理资源。Amazon ES 需要服务相关角色来访问您的 VPC、创建域终端节点和将网络接口放入您的 VPC 的子网中。

当您使用 Amazon ES 控制台在 VPC 中创建域时,Amazon ES 会自动创建该角色。为使这种自动创建成功,您必须具有 iam:CreateServiceLinkedRole 操作的权限。有关更多信息,请参阅 IAM 用户指南 中的服务相关角色权限。

当 Amazon ES 创建该角色后,您可以使用 IAM 控制台查看它(AWSServiceRoleForAmazonElasticsearchService)。

Note

如果创建使用公共终端节点的域,则 Amazon ES 既不需要服务相关角色,也不会创建它。

有关此角色的权限以及如何删除它的完整信息,请参阅使用服务相关角色 (p. 160)。

从公有访问迁移到 VPC 访问在创建域时,您会指定它是应该具有公共终端节点还是驻留在 VPC 中。一旦创建,就无法再切换,而只能创建一个新域,手动重建索引或迁移您的数据。快照提供了一种迁移数据的便捷方法。有关拍摄和还原快照的信息,请参阅使用索引快照 (p. 68)。

Amazon VPC 文档Amazon VPC 有自己的一套文档,用于介绍如何创建和使用您的 Amazon VPC。下表提供指向 AmazonVPC 指南的链接。

描述 文档

如何开始使用 Amazon VPC Amazon VPC 入门指南

如何通过 AWS 管理控制台使用 Amazon VPC Amazon VPC 用户指南

所有 Amazon VPC 命令的完整说明 Amazon EC2 命令行参考 (Amazon VPC 命令是Amazon EC2 参考的一部分。)

Amazon VPC API 操作、数据类型和错误的完整说明

Amazon EC2 API Reference (Amazon VPC API 操作是 Amazon EC2 参考的一部分。)

关于在您终止可选的 IPsec VPN 连接时对网关进行配置的网络管理员之信息

Amazon VPC 网络管理员指南

有关 Amazon Virtual Private Cloud 的更多信息,请参阅 Amazon Virtual Private Cloud。

API 版本 2015-01-0193

Page 100: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南启用静态数据加密

Amazon Elasticsearch Service 的静态数据的加密

Amazon ES 域提供了静态数据加密,这是一种有助于防止他人未经授权访问您的数据的安全功能。该功能使用 AWS Key Management Service (KMS) 来存储和管理您的加密密钥。如果启用,它会对域的以下方面进行加密:

• 索引• 自动快照• Elasticsearch 日志• 交换文件• 应用程序目录中的所有其他数据

以下内容在您启用静态数据加密时不会 加密,但您可以执行额外的步骤来保护它们:

• 手动快照:目前,您无法使用 KMS 主密钥对手动快照进行加密。但是,您可以使用 S3 托管密钥的服务器端加密对您用作快照存储库的存储桶进行加密。有关说明,请参阅the section called “注册手动快照存储库” (p. 70)。

• 慢速日志:如果您发布了慢速日志 (p. 25)并希望对其进行加密,则可以使用与 Amazon ES 域相同的KMS 主密钥来对慢速日志的 CloudWatch Logs 日志组进行加密。要了解更多信息,请参阅 AmazonCloudWatch Logs User Guide中的使用 AWS KMS 对 CloudWatch 日志中的日志数据进行加密。

要了解如何创建 KMS 主密钥,请参阅 AWS Key Management Service Developer Guide 中的创建密钥。

启用静态数据加密默认情况下,域不会对静态数据进行加密,并且您无法将现有域配置为使用该功能。要启用该功能,您必须创建另一个域 (p. 12)并迁移您的数据。静态数据加密需要 Elasticsearch 5.1 或更高版本。

禁用静态数据加密在您配置一个域以对静态数据进行加密后,您无法禁用该设置。相反,您可以随时拍摄现有域的手动快照 (p. 68),创建另一个域 (p. 12),迁移您的数据和删除旧域。

监控对静态数据进行加密的域对静态数据进行加密的域有两个额外指标:KMSKeyError 和 KMSKeyInaccessible。有关这些指标的完整说明,请参阅the section called “群集指标” (p. 43)。您可使用 Amazon ES 控制台或 Amazon CloudWatch来查看它们。

Tip

每个指标都表示域的一个重大问题,因此我们建议您为两者创建 CloudWatch 警报。有关更多信息,请参阅 the section called “建议的 CloudWatch 警报” (p. 85)。

API 版本 2015-01-0194

Page 101: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南其他考虑因素

其他考虑因素• 如果您删除了用于对某个域进行加密的密钥,该域将变得无法访问。Amazon ES 团队无法帮助您恢复数

据。AWS Key Management Service 在经过至少 7 天的等待期后才会删除主密钥,因此,如果 AmazonES 团队检测到您的域面临风险,它们可能会联系您。

• 自动密钥轮换将保留 KMS 主密钥的属性,因此轮换不会影响您访问 Elasticsearch 数据的能力。加密Amazon ES 域不支持手动密钥轮换,手动密钥轮换涉及创建新的主密钥和将任何参考更新到旧密钥。要了解更多信息,请参阅 AWS Key Management Service Developer Guide 中的轮换客户主密钥。

• 某些实例类型不支持静态数据加密。有关详细信息,请参阅 the section called “支持的实例类型” (p. 105)。

• 静态数据加密在 cn-northwest-1 (宁夏) 区域中不可用。• Kibana 仍适用于加密静态数据的域。• 对静态数据进行加密的域对其自动快照使用了不同的存储库名称。要了解更多信息,请参阅“the section

called “还原快照” (p. 72)”。• 加密 Amazon ES 域需要两个授权,每个加密密钥都有一个限制:每个委托人 500 个授权。此限制意味着

您可以使用单个密钥进行加密的 Amazon ES 域的最大数量为 250。目前,Amazon ES 最多支持每个账户100 个域,因此此授权限制无关紧要。但是,如果每个账户的域限制提升,授权限制可能变得相关。

如果您到那时需要加密超过 250 个域,则可以创建额外的密钥。密钥是区域性而不是全球性的,因此,如果您在多个区域中进行操作,则需要多个密钥。

API 版本 2015-01-0195

Page 102: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南群集节点失败

处理 AWS 服务错误本部分介绍如何响应常见 AWS 服务错误。遇到问题时请先参阅本部分中的信息,然后再联系 AWS 支持。

群集节点失败Amazon EC2 实例可能会遇到意外终止并重新启动。通常情况下,Amazon ES 将重启节点。但是,Elasticsearch 群集中的一个或多个节点可能会停留在发生故障状态。

要检查这种情况,请在 Amazon ES 控制台中打开域控制面板。选择 Monitoring 选项卡,然后选择 Nodes指标。查看所报告的节点数是否少于您为群集配置的数量。如果指标显示一个或多个节点出现故障已超过 1天,请联系 AWS 支持。

您还可以设置一个 CloudWatch 警报 (p. 85)以在此问题发生时通知您。Note

Nodes 指标在更改群集配置和服务例行维护期间不准确。此行为是预期的。该指标会报告正确数量的群集节点。要了解更多信息,请参阅“the section called “关于配置更改” (p. 40)”。

为保护您的群集意外终止和重新启动节点,请在 Amazon ES 域为每个索引至少创建一个副本。要了解更多信息,请参阅 Elasticsearch 文档中的分片和副本。

红色群集状态红色群集状态表示至少有一个主分片及其副本未分配给节点。在红色群集状态持续时,即使索引正常,Amazon ES 也会停止自动拍摄快照。

红色群集状态的最常见原因是群集节点发生故障 (p. 96),以及连续处理繁重负载造成 Elasticsearch 进程崩溃。

Note

如果您的 Amazon ES 域进入红色群集状态,AWS Support 可能与您联系,询问您希望自己来解决该问题,还是希望支持团队还原该域的最新自动快照。如果您在 7 天内未回复或解决此问题,AWSSupport 将还原最新的自动快照。您可以设置一个 CloudWatch 警报 (p. 85),在出现红色群集状态时通知您。

最终,红色分片会导致红色群集,而红色索引会导致红色分片。要确定引起红色群集状态的索引,Elasticsearch 有一些可提供帮助的 API。

• GET /_cluster/allocation/explain 选择它找到的第一个未分配的分片,并说明为何无法将它分配给节点:

{ "index": "test4", "shard": 0, "primary": true, "current_state": "unassigned", "can_allocate": "no", "allocate_explanation": "cannot allocate because allocation is not permitted to any of the nodes"}

• GET /_cat/indices?v 显示每个索引的运行状况、文档数量以及磁盘使用情况:

API 版本 2015-01-0196

Page 103: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南从连续处理繁重负载恢复

health status index uuid pri rep docs.count docs.deleted store.size pri.store.sizegreen open test1 30h1EiMvS5uAFr2t5CEVoQ 5 0 820 0 14mb 14mbgreen open test2 sdIxs_WDT56afFGu5KPbFQ 1 0 0 0 233b 233bgreen open test3 GGRZp_TBRZuSaZpAGk2pmw 1 1 2 0 14.7kb 7.3kbred open test4 BJxfAErbTtu5HBjIXJV_7A 1 0 green open test5 _8C6MIXOSxCqVYicH3jsEA 1 0 7 0 24.3kb 24.3kb

删除红色索引是修复红色群集状态的最快方式。接下来您可以扩展您的 Amazon ES 域以便使用更大的实例类型、更多实例或更多基于 EBS 的存储(取决于红色群集状态的原因),并尝试重新创建引发问题的索引。

如果删除存在问题的索引不可行,您可以还原快照 (p. 72)、从索引中删除文档、更改索引设置、减少副本数量或删除其他索引以释放磁盘空间。在重新配置您的 Amazon ES 域之前,一个重要步骤是解决红色群集状态。重新配置具有红色群集状态的域会将问题复杂化,并导致该域卡在 Processing 配置状态,直到问题解决。

从连续处理繁重负载恢复要确定红色群集状态是否源于在数据节点上连续处理繁重负载,请监控以下群集指标。

相关指标 描述 恢复

JVMMemoryPressure 指定用于群集中所有数据节点的 Java 堆的百分比。查看此指标的统计数据最大值,并试图尽可能地减少内存压力下降,因为 Java 垃圾收集器无法回收充足的内存。这种模式可能由于复杂的查询或大型数据字段而产生。

在内存使用率为 75% 时,Elasticsearch会触发并发标记清除 (CMS) 垃圾收集器,该收集器和与其他进程一同运行,以将暂停和中断保持在最低水平。如果CMS 无法收回足够的内存且使用率保持在 75% 以上,Elasticsearch 会触发另一个垃圾收集算法,该算法将终止或减缓其他进程,已释放充足内存,防止内存不足错误。

在内存使用率为 95% 时,Elasticsearch杀死尝试分配内存的进程。它可能会杀死一个关键进程并中断群集中的一个或多个节点。

_nodes/stats/jvm API 提供了一个有用的 JVM 统计数据、内存池使用情况和垃圾收集信息摘要:

GET elasticsearch_domain_endpoint/_nodes/stats/jvm?pretty

为 JVM 设置内存断路器。有关更多信息,请参阅 thesection called “JVM 内存不足错误” (p. 98)。

如果问题仍然存在,请删除不必要索引、减少对域的请求的数量或降低其复杂性、添加实例或使用更大的实例类型。

API 版本 2015-01-0197

Page 104: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南黄色群集状态

相关指标 描述 恢复

CPU 使用率 指定用于群集中各数据节点的 CPU 资源的百分比。查看此指标的 Maximum 统计数据,并查找连续模式的高使用率。

添加数据节点或增加现有数据节点的实例类型的大小。有关更多信息,请参阅 the section called“配置 Amazon ES 域” (p. 17)。

节点 指定群集中的节点数。查看此指标的Minimum 统计数据。这个值会在该服务为群集部署新的实例队列时波动。

添加数据节点。有关更多信息,请参阅 the section called “配置Amazon ES 域” (p. 17)。

黄色群集状态黄色群集状态意味着所有索引的主分片分配给群集中的节点,但是至少有一个索引的副本分片不是如此。单节点群集始终初始化为黄色群集状态,因为不存在 Amazon ES 可分配副本的其他节点。要获得绿色群集状态,请增加节点数。有关更多信息,请参阅 the section called “调整 Amazon ES 域大小” (p. 81) 和 thesection called “配置 Amazon ES 域” (p. 17)。

ClusterBlockException您可能会由于以下原因收到 ClusterBlockException 错误。

缺少可用存储空间如果所有节点都没有足够的存储空间来容纳重新分配的分片,添加文档和创建索引之类的基本写入操作可能开始失败。要了解更多信息,请参阅 Elasticsearch 文档中的基于磁盘的分片分配。the section called “计算存储要求” (p. 81) 提供了 Amazon ES 对磁盘空间使用方式的摘要。

要避免问题,请在 Amazon ES 控制台中监控 FreeStorageSpace 指标并创建 CloudWatch 警报 (p. 85),使该警报在 FreeStorageSpace 降至特定阈值以下时触发。GET /_cat/allocation?v 还提供了分片分配和磁盘使用情况的有用摘要。要解决与缺少存储空间相关的问题,请扩展您的 Amazon ES 域,以使用更大的实例类型、更多实例或更多基于 EBS 的存储。有关说明,请参阅the section called “配置 Amazon ES域” (p. 17)。

由于内存不足而阻止磁盘当 JVMMemoryPressure 指标超过 92% 达 30 分钟时,Amazon ES 将触发保护机制并阻止所有写入操作以防止群集进入红色状态。当打开保护时,写入操作将失败并返回 ClusterBlockException 错误,无法创建新索引,并且会引发 IndexCreateBlockException 错误。

当 JVMMemoryPressure 指标回到 88% 或以下达 5 分钟时,将禁用保护,并取消阻止到群集的写入操作。

JVM 内存不足错误JVM OutOfMemoryError 通常意味着触发了以下一种 JVM 断路器。

断路器 描述 群集设置属性

父级断路器 允许所有断路器占用的 JVM堆内存百分比总和。默认值为70%.

indices.breaker.total.limit

有关更多信息,请参阅 Elasticsearch 文档中群集更新设置。

API 版本 2015-01-0198

Page 105: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南JVM 内存不足错误

断路器 描述 群集设置属性

现场数据断路器 将单个数据字段加载到内存时所允许的 JVM 堆内存百分比。默认值为 60%. 如果您通过大型字段上传数据,我们建议您提高此限制。

indices.breaker.fielddata.limit

有关更多信息,请参阅 Elasticsearch 文档中的字段数据。

请求断路器 允许用于响应服务请求的数据结构所占的 JVM 堆内存百分比。默认值为 40%. 如果您的服务请求涉及计算聚合,我们建议您提高此限制。

indices.breaker.request.limit

有关更多信息,请参阅 Elasticsearch 文档中的字段数据。

API 版本 2015-01-0199

Page 106: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南Kibana:我无法向 Kibana 服务终端节点签署 AWS 服务请求

故障排除以下部分为您在使用与 Amazon Elasticsearch Service (Amazon ES) 集成的服务 (如 Amazon S3、Kinesis和 IAM) 和产品 (如 Kibana) 时可能遇到的常见问题提供解决方案:

主题• Kibana:我无法向 Kibana 服务终端节点签署 AWS 服务请求 (p. 100)• Kibana:我没有在 Kibana 4 中看到我的 Elasticsearch 域的索引 (p. 101)• Kibana:我在使用 Kibana 查看我的数据时收到浏览器错误 (p. 102)• 集成:我在 IAM 控制台中没有看到 Amazon ES 的服务角色 (p. 102)• 域创建:在选择 VPC 访问权限时执行未经授权的操作 (p. 103)• 域创建:在选择 VPC 访问权限后卡在加载状态 (p. 103)• 开发工具包:在我尝试使用开发工具包时收到证书错误 (p. 103)

有关特定于服务的错误的信息,请参阅本指南中的处理 AWS 服务错误 (p. 96)。

Kibana:我无法向 Kibana 服务终端节点签署 AWS服务请求

Kibana 终端节点不支持有签名的 AWS 服务请求。我们建议您通过下表中所述的一种配置选项来访问Kibana。

Kibana 配置 描述

匿名,基于 IP 的访问 如果 Kibana 主机位于防火墙之后,将 Kibana 终端节点配置为接受来自防火墙IP 地址的匿名请求。如果您需要指定 IP 地址范围,请使用 CIDR 表示法。

NAT 网关与 AmazonVPC 配合使用

Amazon VPC 支持 NAT 网关。当您创建 NAT 网关时,还必须指定与该网关关联的弹性 IP 地址。NAT 网关使用弹性 IP 地址作为源 IP 地址,将流量发送到公共 Internet 网关。在 Kibana 的访问策略中指定此弹性 IP 地址,以允许所有来自该网关的请求。有关更多信息,请参阅 Amazon Virtual Private Cloud 用户指南中的 NAT 网关基本知识和创建 NAT 网关。

示例

以下示例是匿名的、基于 IP 的访问策略,其中指定了 IP 地址范围和 18 位路由前缀:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "*" },

API 版本 2015-01-01100

Page 107: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南Kibana:我没有在 Kibana 4 中看到我的 Elasticsearch 域的索引

"Action": "es:*", "Resource": "arn:aws:es:us-west-2:123456789012:domain/mydomain/_plugin/kibana", "Condition": { "IpAddress": { "aws:SourceIp": "192.240.192.0/18" } } } ]}

以下示例指定从与 NAT 网关关联的弹性 IP 地址匿名访问:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:*", "Resource": "arn:aws:es:us-west-2:123456789012:domain/mydomain/_plugin/kibana", "Condition": { "IpAddress": { "aws:SourceIp": "198.51.100.4" } } } ]}

Kibana:我没有在 Kibana 4 中看到我的Elasticsearch 域的索引

初次使用 Kibana 4 但熟悉 Kibana 3 的用户,在界面中查找索引时有时会遇到困难。Kibana 3 提供了可查看数据的默认控制面板,但 Kibana 4 不同,它要求您首先指定与 Amazon ES 域中的索引名称相匹配的索引名称或模式。例如,如果您的 Amazon ES 域包含名为 movies-2013 的索引,以下模式可与此索引匹配:

• movies-2013• movies-*• mov*

在指定索引名称或模式后,您可以在 Amazon ES 域索引中配置数据的可视化。您可以在 Amazon ES 控制台的 Indices 选项卡上找到您的域索引的名称。有关使用 Kibana 4 的更多信息,请参阅 Kibana 用户指南。

Note

Amazon ES 还支持 Kibana 3,如果您希望使用该版本,可以配置对该版本工具的访问。指定 /_plugin/kibana3 作为访问策略中的资源,而不是 /_plugin/kibana。该服务处理完配置更改后,您可以通过手动编辑 Amazon ES 控制台中提供的 Kibana服务终端节点来访问 Kibana 3。例如,如果控制台指定您的 Kibana 终端节点为mydomain-6w5y8xjt5ydwsrubmdk4m5kcpa.us-west-2.es.amazonaws.com/_plugin/kibana/,请将浏览器改为指向 mydomain-6w5y8xjt5ydwsrubmdk4m5kcpa.us-west-2.es.amazonaws.com/_plugin/kibana3/。

API 版本 2015-01-01101

Page 108: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南Kibana:我在使用 Kibana 查看我的数据时收到浏览器错误

Kibana:我在使用 Kibana 查看我的数据时收到浏览器错误

当您在 Amazon ES 域中使用 Kibana 查看数据时,浏览器将在 HTTP 响应对象中包括服务错误消息。您可以使用 Web 浏览器中常用的开发人员工具 (如 Chrome 中的开发者工具) 来查看基础服务错误和帮助您进行调试工作。

在 Chrome 中查看服务错误

1. 从菜单中,依次选择 View、Developer、Developer Tools。2. 选择 Network 选项卡。3. 在 Status 列中,选择状态为 500 的任何 HTTP 会话。

例如,以下服务错误消息表示某个搜索请求可能因为下表中所示的一个原因而失败:

"Request to Elasticsearch failed: {"error":"SearchP…be larger than limit of[5143501209/4.7gb]]; }]"}"

潜在原因 解决办法

您触发了 JVM 请求内存断路器。 请求断路器指定用于响应服务请求的 JVM 内存的百分比。您可以配置用于解决此故障的 JVM 断路器。有关配置 JVM 断路器的更多信息,请参阅本指南的处理 AWS 服务错误 (p. 96)中的 JVM 内存不足错误 (p. 98)。

您在 Kibana 控制面板中指定通用的正则表达式,例如 logstash*。

使用更严格的正则表达式,例如,将结果限制为过去七天内的索引的子集。

在 Firefox 中查看服务错误

1. 从菜单中,依次选择 Tools、Web Developer、Network。2. 选择任何状态为 500 的 HTTP 会话。3. 选择 Response 选项卡以查看服务响应。

集成:我在 IAM 控制台中没有看到 Amazon ES 的服务角色

您可以将 Amazon ES 与其他服务集成 (如 Amazon S3 和 Kinesis),如本指南的从 Amazon S3 将流数据加载到 Amazon ES (p. 61) 和从 Kinesis 将流数据加载到 Amazon ES (p. 64) 中所述。这两种集成均使用 AWSLambda 作为云中的事件处理程序。当您使用 AWS Lambda 控制台创建 Lambda 函数时,该控制台会自动打开 IAM 控制台,帮助您创建所需的执行角色。您不需要亲自打开 IAM 控制台和选择服务角色。但是,在AWS Lambda 帮助您创建新角色后,您必须打开 IAM 控制台,并将以下 IAM 策略挂载到该角色:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "es:*"

API 版本 2015-01-01102

Page 109: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南域创建:在选择 VPC 访问权限时执行未经授权的操作

], "Effect": "Allow", "Resource": "arn:aws:es:us-west-2:123456789012:domain/<my_domain_name>/*" } ]}

有关分步过程,请参阅本指南中的从 Amazon S3 将流数据加载到 Amazon ES (p. 61) 和从 Kinesis 将流数据加载到 Amazon ES (p. 64)。

域创建:在选择 VPC 访问权限时执行未经授权的操作

当您使用 Amazon ES 控制台创建新域时,可以选择公有访问权限或 VPC 访问权限。如果您选择了 VPCaccess,则 Amazon ES 将查询 VPC 信息,如果您没有与您的用户凭证关联的正确策略,则查询将失败。随后会出现错误消息:

You are not authorized to perform this operation. (Service: AmazonEC2; Status Code: 403; Error Code: UnauthorizedOperation

要启用此查询,您必须有权访问 ec2:DescribeVpcs、ec2:DescribeSubnets 和ec2:DescribeSecurityGroups 操作。此要求仅适用于控制台。如果您使用 AWS CLI 来创建和配置一个使用 VPC 终端节点的域,则不需要访问这些操作。

域创建:在选择 VPC 访问权限后卡在加载状态在创建使用 VPC 访问权限的新域后,该域的 Configuration state 可能会卡在 Loading。如果出现此问题,则很可能是对您的区域禁用了 AWS Security Token Service (AWS STS)。

要将 VPC 终端节点添加到您的 VPC,Amazon ES 需要代入AWSServiceRoleForAmazonElasticsearchService 角色。因此,必须启用 AWS STS 才能在给定区域中创建使用 VPC 访问权限的新域。要了解有关启用和禁用 AWS STS 的更多信息,请参阅 IAM 用户指南。

开发工具包:在我尝试使用开发工具包时收到证书错误

由于 AWS 开发工具包使用的是来自计算机的 CA 证书,因此更改 AWS 服务器上的证书可能会导致您在尝试使用开发工具包时无法连接。虽然错误消息是不同的,但通常包含以下文本:

Failed to query Elasticsearch...SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

您可以通过使计算机的 CA 证书和操作系统保持最新来防止出现这些故障。如果您在公司环境中遇到这个问题而且未管理您自己的计算机,则可能需要请求管理员来协助处理更新过程。

以下列表显示了最低的操作系统和 Java 版本:

API 版本 2015-01-01103

Page 110: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南开发工具包:在我尝试使用开发工具包时收到证书错误

• 已安装 2005 年 1 月版或更高版本更新的 Microsoft Windows 版本在其信任列表中至少包含一个必需 CA。• 带 Java for Mac OS X 10.4 版本 5 的 Mac OS X 10.4 (2007 年 2 月版)、Mac OS X 10.5 (2007 年 10 月

版) 及更高版本在其信任列表中至少包含一个必需 CA。• Red Hat Enterprise Linux 5 (2007 年 3 月版)、6 和 7 以及 CentOS 5、6 和 7 在其默认信任 CA 列表中至

少包含一个必需 CA。• Java 1.4.2_12 (2006 年 5 月版)、5 Update 2 (2005 年 3 月版) 以及所有更高版本,包括 Java 6 (2006 年

12 月版)、7 和 8 在其默认信任 CA 列表中至少包含一个必需 CA。

这三个证书颁发机构为:

• Amazon Root CA 1• Starfield Services Root Certificate Authority – G2• Starfield Class 2 Certification Authority

可以从 Amazon Trust Services 获得来自前两个颁发机构的根证书,而使您的计算机保持最新是更直接的解决方案。要了解有关 ACM 提供的证书的更多信息,请参阅 AWS Certificate Manager 常见问题。

Note

目前,us-east-1 区域内的 Amazon ES 域使用的是来自其他颁发机构的证书。我们计划近期将该区域更新为使用这些新的证书颁发机构。

API 版本 2015-01-01104

Page 111: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南支持的实例类型

Amazon Elasticsearch Service 一般参考

Amazon Elasticsearch Service (Amazon ES) 支持多种实例、操作、插件和其他资源。

主题• 支持的实例类型 (p. 105)• 支持的 Elasticsearch 操作 (p. 107)• 支持的插件 (p. 112)• 其他支持的资源 (p. 114)

支持的实例类型实例是一种虚拟计算环境。实例类型是 CPU、内存、存储和网络容量的特定配置。为 Amazon ES 域选择实例类型时,应考虑您打算在实例上运行的应用程序或软件的需求。如果启用专用主节点 (p. 83),则可以为主节点选择与为数据节点选择的实例类型不同的实例类型。

要了解更多信息,请参阅the section called “调整 Amazon ES 域大小” (p. 81)、the section called “群集和实例限制” (p. 156)以及 the section called “EBS 卷大小限制” (p. 156)。

Amazon ES 支持以下实例类型。

T2 实例类型

• t2.micro.elasticsearch

• t2.small.elasticsearch

• t2.medium.elasticsearch

Note

• 仅当您的域的实例数小于或等于 10 时,才能使用 t2 实例类型。• t2.micro.elasticsearch 实例类型仅支持 Elasticsearch 2.3 和 1.5。• t2 实例类型不支持静态数据加密。

M3 实例类型

• m3.medium.elasticsearch

• m3.large.elasticsearch

• m3.xlarge.elasticsearch

• m3.2xlarge.elasticsearch

Note

• m3 实例类型在 us-east-2、ca-central-1、eu-west-2、eu-west-3、ap-northeast-2、ap-south-1 和cn-northwest-1 区域中不可用。

• m3 实例类型不支持静态数据加密。

API 版本 2015-01-01105

Page 112: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南支持的实例类型

M4 实例类型

• m4.large.elasticsearch

• m4.xlarge.elasticsearch

• m4.2xlarge.elasticsearch

• m4.4xlarge.elasticsearch

• m4.10xlarge.elasticsearch

Note

• m4 实例类型在 eu-west-3 区域中不可用。

C4 实例类型

• c4.large.elasticsearch

• c4.xlarge.elasticsearch

• c4.2xlarge.elasticsearch

• c4.4xlarge.elasticsearch

• c4.8xlarge.elasticsearch

Note

• c4 实例类型在 eu-west-3 区域中不可用。

R3 实例类型

• r3.large.elasticsearch

• r3.xlarge.elasticsearch

• r3.2xlarge.elasticsearch

• r3.4xlarge.elasticsearch

• r3.8xlarge.elasticsearch

Note

• r3 实例类型在 ca-central-1、eu-west-2、eu-west-3、sa-east-1 和 cn-northwest-1 区域中不可用。

• r3 实例类型不支持静态数据加密。

R4 实例类型

• r4.large.elasticsearch

• r4.xlarge.elasticsearch

• r4.2xlarge.elasticsearch

• r4.4xlarge.elasticsearch

• r4.8xlarge.elasticsearch

• r4.16xlarge.elasticsearch

I2 实例类型

API 版本 2015-01-01106

Page 113: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南支持的 Elasticsearch 操作

• i2.xlarge.elasticsearch

• i2.2xlarge.elasticsearch

Note

• i2 实例类型在 sa-east-1、ca-central-1、eu-west-2、eu-west-3、us-east-2 和 cn-northwest-1 区域中不可用。

I3 实例类型

• i3.large.elasticsearch

• i3.xlarge.elasticsearch

• i3.2xlarge.elasticsearch

• i3.4xlarge.elasticsearch

• i3.8xlarge.elasticsearch

• i3.16xlarge.elasticsearch

Note

• i3 实例类型不支持 EBS 存储卷。• i3 实例类型不支持 Elasticsearch 2.3 或 1.5。

支持的 Elasticsearch 操作Amazon ES 支持 Elasticsearch 的许多版本。以下主题介绍 Amazon ES 在每个版本中支持的操作。

主题• 值得注意的 API 差异 (p. 107)• 版本 6.2 (p. 108)• 版本 6.0 (p. 109)• 版本 5.5 (p. 109)• 版本 5.3 (p. 110)• 版本 5.1 (p. 111)• 版本 2.3 (p. 112)• 版本 1.5 (p. 112)

值得注意的 API 差异在 Elasticsearch 5.3 之前,Amazon ES 域上的 _cluster/settings API 仅支持 HTTP 方法而不是 方法。PUTGET较新的版本支持 GET 方法,如以下示例所示:

curl -XGET 'https://domain.region.es.amazonaws.com/_cluster/settings?pretty'

示例返回以下内容:

{ "persistent" : { "cluster" : {

API 版本 2015-01-01107

Page 114: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南版本 6.2

"routing" : { "allocation" : { "cluster_concurrent_rebalance" : "2" } } }, "indices" : { "recovery" : { "max_bytes_per_sec" : "20mb" } } }, "transient" : { "cluster" : { "routing" : { "allocation" : { "exclude" : { "di_number" : "2" } } } } }}

• cluster_concurrent_rebalance 指定可在任何给定时间重定位至新节点的分片的数量。有关更多信息,请参阅 Elasticsearch 文档中的分片重新平衡设置。

• max_bytes_per_sec 是 Elasticsearch 在恢复事件期间使用的最大数据传输速度。• di_number 是一个在配置发生更改后用于将分片复制到新的域实例 的内部 Amazon ES 值。

版本 6.2对于 Elasticsearch 6.2,Amazon ES 支持以下操作。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cache/clear (仅索引)• /_cat

• /_cluster/allocation/explain

• /_cluster/health

• /_cluster/pending_tasks

• 适用于以下三个属性的 /_cluster/settings4:• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• /_cluster/state

• /_cluster/stats

• /_count

• /_delete_by_query1

• /_explain

• /_field_stats

• /_flush

• /_forcemerge (仅索引)• /_ingest

• /_mapping

• /_mget

• /_msearch

• /_mtermvectors

• /_nodes

• /_plugin/kibana

• /_rank_eval

• /_recovery (仅索引)• /_refresh

• /_reindex1

• /_rollover

• /_scripts3

/_search2

• /_search profile

• /_segments (仅索引)• /_shard_stores

• /_shrink

• /_snapshot

• /_split

• /_stats

• /_status

• /_tasks

• /_template

• /_termvectors (仅索引)• _update3

• /_update_by_query1

• /_validate

API 版本 2015-01-01108

Page 115: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南版本 6.0

1. 群集配置更改可能会在这些操作完成前将其中断。我们建议您与这些操作一起使用 /_tasks 操作,以验证请求是否成功完成。

2. 对具有消息正文的 /_search/scroll 的 DELETE 请求必须在 HTTP 标头中指定 "Content-Length"。默认情况下,大多数客户端会添加此标头。要避免 scroll_id 值中出现 = 字符的问题,请使用请求正文 (而不是查询字符串) 将 scroll_id 值传递到 Amazon ES。

3. 有关使用脚本的注意事项,请参阅the section called “其他支持的资源” (p. 114)。4. 请参考 PUT 方法。有关 GET 方法的信息,请参阅the section called “值得注意的 API 差异” (p. 107)。

有关 Elasticsearch 6.2 的操作的更多信息,请参阅 Elasticsearch 文档。

版本 6.0对于 Elasticsearch 6.0,Amazon ES 支持以下操作。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cache/clear (仅索引)• /_cat

• /_cluster/allocation/explain

• /_cluster/health

• /_cluster/pending_tasks

• 适用于以下三个属性的 /_cluster/settings4:• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• /_cluster/state

• /_cluster/stats

• /_count

• /_delete_by_query1

• /_explain

• /_field_stats

• /_flush

• /_forcemerge (仅索引)• /_ingest

• /_mapping

• /_mget

• /_msearch

• /_mtermvectors

• /_nodes

• /_plugin/kibana

• /_recovery (仅索引)• /_refresh

• /_reindex1

• /_rollover

• /_scripts3

/_search2

• /_search profile

• /_segments (仅索引)• /_shard_stores

• /_shrink

• /_snapshot

• /_stats

• /_status

• /_tasks

• /_template

• /_termvectors (仅索引)• _update3

• /_update_by_query1

• /_validate

1. 群集配置更改可能会在这些操作完成前将其中断。我们建议您与这些操作一起使用 /_tasks 操作,以验证请求是否成功完成。

2. 对具有消息正文的 /_search/scroll 的 DELETE 请求必须在 HTTP 标头中指定 "Content-Length"。默认情况下,大多数客户端会添加此标头。要避免 scroll_id 值中出现 = 字符的问题,请使用请求正文 (而不是查询字符串) 将 scroll_id 值传递到 Amazon ES。

3. 有关使用脚本的注意事项,请参阅the section called “其他支持的资源” (p. 114)。4. 请参考 PUT 方法。有关 GET 方法的信息,请参阅the section called “值得注意的 API 差异” (p. 107)。

有关 Elasticsearch 6.0 的操作的更多信息,请参阅 Elasticsearch 文档。

版本 5.5对于 Elasticsearch 5.5,Amazon ES 支持以下操作。

API 版本 2015-01-01109

Page 116: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南版本 5.3

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cache/clear (仅索引)• /_cat

• /_cluster/allocation/explain

• /_cluster/health

• /_cluster/pending_tasks

• 适用于以下三个属性的 /_cluster/settings4:• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• /_cluster/state

• /_cluster/stats

• /_count

• /_delete_by_query1

• /_explain

• /_field_stats

• /_flush

• /_forcemerge (仅索引)• /_ingest

• /_mapping

• /_mget

• /_msearch

• /_mtermvectors

• /_nodes

• /_plugin/kibana

• /_recovery (仅索引)• /_refresh

• /_reindex1

• /_rollover

• /_scripts3

/_search2

• /_search profile

• /_segments (仅索引)• /_shard_stores

• /_shrink

• /_snapshot

• /_stats

• /_status

• /_tasks

• /_template

• /_termvectors (仅索引)• _update3

• /_update_by_query1

• /_validate

1. 群集配置更改可能会在这些操作完成前将其中断。我们建议您与这些操作一起使用 /_tasks 操作,以验证请求是否成功完成。

2. 对具有消息正文的 /_search/scroll 的 DELETE 请求必须在 HTTP 标头中指定 "Content-Length"。默认情况下,大多数客户端会添加此标头。要避免 scroll_id 值中出现 = 字符的问题,请使用请求正文 (而不是查询字符串) 将 scroll_id 值传递到 Amazon ES。

3. 有关使用脚本的注意事项,请参阅the section called “其他支持的资源” (p. 114)。4. 请参考 PUT 方法。有关 GET 方法的信息,请参阅the section called “值得注意的 API 差异” (p. 107)。

有关 Elasticsearch 5.5 的操作的更多信息,请参阅 Elasticsearch 文档。

版本 5.3对于 Elasticsearch 5.3,Amazon ES 支持以下操作。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cache/clear (仅索引)• /_cat

• /_cluster/allocation/explain

• /_cluster/health

• /_cluster/pending_tasks

• 适用于以下三个属性的 /_cluster/settings4:

• /_delete_by_query1

• /_explain

• /_field_stats

• /_flush

• /_forcemerge (仅索引)• /_ingest

• /_mapping

• /_mget

• /_msearch

• /_mtermvectors

• /_nodes

• /_search2

• /_search profile

• /_segments (仅索引)• /_shard_stores

• /_shrink

• /_snapshot

• /_stats

• /_status

• /_tasks

• /_template

• /_termvectors (仅索引)

API 版本 2015-01-01110

Page 117: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南版本 5.1

• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• /_cluster/state

• /_cluster/stats

• /_count

• /_plugin/kibana

• /_recovery (仅索引)• /_refresh

• /_reindex1

• /_rollover

• _update3

• /_update_by_query1

• /_validate

1. 群集配置更改可能会在这些操作完成前将其中断。我们建议您与这些操作一起使用 /_tasks 操作,以验证请求是否成功完成。

2. 对具有消息正文的 /_search/scroll 的 DELETE 请求必须在 HTTP 标头中指定 "Content-Length"。默认情况下,大多数客户端会添加此标头。要避免 scroll_id 值中出现 = 字符的问题,请使用请求正文 (而不是查询字符串) 将 scroll_id 值传递到 Amazon ES。

3. 有关使用脚本的注意事项,请参阅the section called “其他支持的资源” (p. 114)。4. 请参考 PUT 方法。有关 GET 方法的信息,请参阅the section called “值得注意的 API 差异” (p. 107)。

有关 Elasticsearch 5.3 的操作的更多信息,请参阅 Elasticsearch 文档。

版本 5.1对于 Elasticsearch 5.1,Amazon ES 支持以下操作。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cache/clear (仅索引)• /_cat

• /_cluster/allocation/explain

• /_cluster/health

• /_cluster/pending_tasks

• 适用于以下三个属性的 /_cluster/settings (仅限 PUT):• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• /_cluster/state

• /_cluster/stats

• /_count

• /_delete_by_query1

• /_explain

• /_field_stats

• /_flush

• /_forcemerge (仅索引)• /_ingest

• /_mapping

• /_mget

• /_msearch

• /_mtermvectors

• /_nodes

• /_plugin/kibana

• /_recovery (仅索引)• /_refresh

• /_reindex1

• /_rollover

• /_search2

• /_search profile

• /_segments (仅索引)• /_shard_stores

• /_shrink

• /_snapshot

• /_stats

• /_status

• /_tasks

• /_template

• /_termvectors (仅索引)

• _update3

• /_update_by_query1

• /_validate

1. 群集配置更改可能会在这些操作完成前将其中断。我们建议您与这些操作一起使用 /_tasks 操作,以验证请求是否成功完成。

2. 对具有消息正文的 /_search/scroll 的 DELETE 请求必须在 HTTP 标头中指定 "Content-Length"。默认情况下,大多数客户端会添加此标头。要避免 scroll_id 值中出现 = 字符的问题,请使用请求正文 (而不是查询字符串) 将 scroll_id 值传递到 Amazon ES。

3. 有关使用脚本的注意事项,请参阅the section called “其他支持的资源” (p. 114)。

API 版本 2015-01-01111

Page 118: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南版本 2.3

有关 Elasticsearch 5.1 的操作的更多信息,请参阅 Elasticsearch 文档。

版本 2.3对于 Elasticsearch 2.3,Amazon ES 支持以下操作。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cache/clear (仅索引)• /_cat

• /_cluster/health

• 适用于以下四个属性的 /_cluster/settings (仅限 PUT):• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• threadpool.bulk.queue_size

• /_cluster/stats

• /_count

• /_flush

• /_forcemerge (仅索引)• /_mapping

• /_mget

• /_msearch

• /_nodes

• /_percolate

• /_plugin/kibana

• /_recovery (仅索引)• /_refresh

• /_search

• /_segments (仅索引)• /_snapshot

• /_stats

• /_status

• /_template

有关 Elasticsearch 2.3 的操作的更多信息,请参阅 Elasticsearch 文档。

版本 1.5对于 Elasticsearch,Amazon ES 支持以下操作。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cat

• /_cluster/health

• 适用于以下四个属性的 /_cluster/settings (仅限 PUT):• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• threadpool.bulk.queue_size

• /_cluster/stats

• /_count

• /_flush

• /_mapping

• /_mget

• /_msearch

• /_nodes

• /_percolate

• /_plugin/kibana

• /_plugin/kibana3

• /_refresh

• /_search

• /_snapshot

• /_stats

• /_status

• /_template

有关 Elasticsearch 1.5 的操作的更多信息,请参阅 Elasticsearch 文档。

支持的插件Amazon ES 域预先打包了 Elasticsearch 社区提供的插件。此服务可为您自动部署和管理插件。

API 版本 2015-01-01112

Page 119: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南支持的插件

Note

Kibana 在 Amazon ES 的早期版本中是一个插件,在较新的版本中是一个 Node.js 应用程序。所有Amazon ES 域中均包含 Kibana 的预安装版本。

Elasticsearch 版本 插件

6.2 • ICU 分析• Ingest Attachment 处理器• Ingest 用户代理处理器• 日语 (kuromoji) 分析• 映射器 Murmur3• 映射器大小• 拼音分析• 智能中文分析• Stempel Polish 分析• 乌克兰语分析

6.0 • ICU 分析• Ingest Attachment 处理器• Ingest 用户代理处理器• 日语 (kuromoji) 分析• 映射器 Murmur3• 映射器大小• 拼音分析• 智能中文分析• Stempel Polish 分析• 乌克兰语分析• seunjeon 韩语分析(针对 Amazon ES 优化)

5.5 • ICU 分析• Ingest Attachment 处理器• Ingest 用户代理处理器• 日语 (kuromoji) 分析• 映射器附件• 映射器 Murmur3• 映射器大小• 拼音分析• 智能中文分析• Stempel Polish 分析• 乌克兰语分析• seunjeon 韩语分析(针对 Amazon ES 优化)

5.3 • ICU 分析• Ingest Attachment 处理器• Ingest 用户代理处理器• 日语 (kuromoji) 分析• 映射器附件• 映射器 Murmur3

API 版本 2015-01-01113

Page 120: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南输出插件

Elasticsearch 版本 插件• 映射器大小• 拼音分析• 智能中文分析• Stempel Polish 分析• 乌克兰语分析• seunjeon 韩语分析(针对 Amazon ES 优化)

5.1 • ICU 分析• Ingest Attachment 处理器• Ingest 用户代理处理器• 日语 (kuromoji) 分析• 映射器 Murmur3• 拼音分析• 智能中文分析• Stempel Polish 分析• seunjeon 韩语分析(针对 Amazon ES 优化)

2.3 • ICU 分析• 日语 (kuromoji) 分析• Kibana 4• 拼音分析

1.5 • ICU 分析• 日语 (kuromoji) 分析• Kibana 3 (位于 _plugin/kibana3/ 终端节点上)• Kibana 4

输出插件Amazon ES 支持通过两种 Logstash 输出插件将数据流式传输到 Amazon ES:标准 Elasticsearch 输出插件和向 Amazon ES 签署和导出 Logstash 事件的 logstash-output-amazon-es 插件。

有关 Logstash 的更多信息,请参阅the section called “使用 Logstash 插件加载批量数据” (p. 79)。

其他支持的资源bootstrap.mlockall

该服务启用 bootstrap.mlockall 中的 elasticsearch.yml,它锁定 JVM 内存并防止操作系统将其置换到磁盘。这适用于所有受支持的实例类型,以下内容除外:• t2.micro.elasticsearch

• t2.small.elasticsearch

• t2.medium.elasticsearch

脚本编写模块

该服务支持为 Elasticsearch 5.x 和较新的域编写脚本。该服务不支持为 1.5 或 2.3 编写脚本。

API 版本 2015-01-01114

Page 121: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南其他支持的资源

支持的脚本选项包括:• Painless• Lucene 表达式• Mustache

对于 Elasticsearch 5.5 和更新的域,Amazon ES 支持使用 _scripts 终端节点的已存储脚本。Elasticsearch 5.3 和 5.1 域仅支持内联脚本。要了解更多信息,请参阅 Elasticsearch 文档中的如何使用脚本。

TCP 传输

该服务在端口 80 上支持 HTTP,但不支持 TCP 传输。

API 版本 2015-01-01115

Page 122: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南操作

Amazon Elasticsearch Service 配置API 参考

本参考介绍了 Amazon Elasticsearch Service 配置 API 中的操作、数据类型和错误。配置 API 是您可用于通过 HTTP 创建和配置 Amazon ES 域的 REST API。您还可以使用 AWS CLI 和控制台配置 Amazon ES 域。有关更多信息,请参阅创建和配置 Amazon ES 域 (p. 12)。

• 操作 (p. 116)• 数据类型 (p. 145)• 错误 (p. 155)

操作下表针对 Amazon Elasticsearch Service 配置 API 的 REST 接口,提供了每个操作所需的 HTTP 方法的快速参考。每个操作的描述还包括所需的 HTTP 方法。

Note

所有配置服务请求必须经过签名。有关更多信息,请参阅本指南中的签署 Amazon Elasticsearch 服务请求 (p. 32)和 AWS General Reference中的签名版本 4 签名流程。

操作 HTTP 方法

AddTags (p. 117) POST

CreateElasticsearchDomain (p. 118) POST

DeleteElasticsearchDomain (p. 121) DELETE

DeleteElasticsearchServiceRole (p. 123) DELETE

DescribeElasticsearchDomain (p. 124) GET

DescribeElasticsearchDomainConfig (p. 126) GET

DescribeElasticsearchDomains (p. 129) POST

DescribeElasticsearchInstanceTypeLimits (p. 132)GET

ListDomainNames (p. 134) GET

ListElasticsearchInstanceTypes (p. 135) GET

ListElasticsearchVersions (p. 137) GET

ListTags (p. 138) GET

RemoveTags (p. 139) POST

UpdateElasticsearchDomainConfig (p. 141) POST

API 版本 2015-01-01116

Page 123: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南AddTags

AddTags将资源标签附加到 Amazon ES 域。有关更多信息,请参阅标记 Amazon ES 域 (p. 51)。

语法POST /2015-01-01/tags{ "ARN": "<DOMAIN_ARN>", "TagList": [ { "Key": "<TAG_KEY>", "Value": "<TAG_VALUE>" } ]}

请求参数此操作不使用请求参数。

请求正文

参数 数据类型 必需? 说明

TagList TagList (p. 153) 是 资源标签列表

ARN ARN (p. 146) 是 要附加资源标签的 AmazonES 域的 Amazon 资源名称(ARN)。

响应元素不适用。AddTags 操作不返回数据结构。

错误AddTags 操作可能返回以下错误:

• BaseException (p. )• LimitExceededException (p. )• ValidationException (p. )• InternalException (p. )

示例以下示例将标签键为 project 的单个资源标签附加到 logs Amazon ES 域:

请求

POST es.<AWS_REGION>.amazonaws.com/2015-01-01/tags{ "ARN": "<DOMAIN_ARN>",

API 版本 2015-01-01117

Page 124: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南CreateElasticsearchDomain

"TagList": [ { "Key": "project", "Value": "trident" } ]}

响应

HTTP/1.1 200 OKx-amzn-RequestId: 5a6a5790-536c-11e5-9cd2-b36dbf43d89eContent-Type: application/jsonContent-Length: 0Date: Sat, 05 Sep 2015 01:20:55 GMT

CreateElasticsearchDomain创建新的 Amazon ES 域。有关更多信息,请参阅 the section called “ 创建 Amazon ES 域” (p. 12)。

Note

如果您尝试创建 Amazon ES 域,并且已存在具有相同名称的域,则 API 不会报告错误。相反,它会返回现有域的详细信息。

语法POST /2015-01-01/es/domain{ "DomainName": "<DOMAIN_NAME>", "ElasticsearchVersion": "<VERSION>", "ElasticsearchClusterConfig": { "InstanceType": "<INSTANCE_TYPE>", "InstanceCount": <INSTANCE_COUNT>, "DedicatedMasterEnabled": "<TRUE|FALSE>", "DedicatedMasterCount": <INSTANCE_COUNT>, "DedicatedMasterType": "<INSTANCE_TYPE>", "ZoneAwarenessEnabled": "<TRUE|FALSE>" }, "EBSOptions": { "EBSEnabled": "<TRUE|FALSE>", "VolumeType": "<VOLUME_TYPE>", "VolumeSize": "<VOLUME_SIZE>", "Iops": "<VALUE>" }, "VPCOptions": { "SubnetIds": [ "<SUBNET_ID>" ], "SecurityGroupIds": [ "<SECURITY_GROUP_ID>" ] }, "AccessPolicies": "<ACCESS_POLICY_DOCUMENT>", "SnapshotOptions": { "AutomatedSnapshotStartHour": <START_HOUR> }, "LogPublishingOptions": { "SEARCH_SLOW_LOGS": { "CloudWatchLogsLogGroupArn":"<ARN>", "Enabled":true },

API 版本 2015-01-01118

Page 125: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南CreateElasticsearchDomain

"INDEX_SLOW_LOGS": { "CloudWatchLogsLogGroupArn":"<ARN>", "Enabled":true } }, "EncryptionAtRestOptions": { "Enabled": true, "KmsKeyId": "<KEY_ID>" }, "AdvancedOptions": { "rest.action.multi.allow_explicit_index": "<TRUE|FALSE>", "indices.fielddata.cache.size": "<PERCENTAGE_OF_HEAP>" }}

请求参数此操作不使用 HTTP 请求参数。

请求正文

参数 数据类型 必需? 说明

DomainName DomainName (p. 147) 是 要创建的 Amazon ES 域的名称。

ElasticsearchVersion字符串 否 Elasticsearch 的版本。如果未指定,则将 1.5 用作默认值。有关所支持版本的完整列表,请参阅the section called “支持的Elasticsearch 版本” (p. 2)。

ElasticsearchClusterConfigElasticsearchClusterConfig (p. 147)否 Amazon ES 域的群集配置的容器。

EBSOptions EBSOptions (p. 147) 否 为 Amazon ES 域启用基于 EBS 的存储所需的参数的容器。有关更多信息,请参阅配置基于 EBS 的存储 (p. 19)。

VPCOptions VPCOptions (p. 154) 否 配置 Amazon ES 以便与 VPC配合使用所需的值的容器。要了解更多信息,请参阅“AmazonElasticsearch Service 域的 VPC 支持 (p. 88)”。

AccessPolicies 字符串 否 为新的 Amazon ES 域指定访问策略的 IAM 策略文档。有关更多信息,请参阅配置访问策略 (p. 21)。

SnapshotOptions SnapshotOptions (p. 152) 否 配置域索引自动快照所需的参数的容器。有关更多信息,请参阅配置快照 (p. 23)。

AdvancedOptions AdvancedOptions (p. 145) 否 用于指定高级配置选项的键值对。有关更多信息,请参阅配置高级选项 (p. 24)。

LogPublishingOptionsLogPublishingOptions (p. 151)否 用于配置慢速日志发布的键值对。

EncryptionAtRestOptionsEncryptionAtRestOptions (p. 150)否 用于至少启用加密的键值对。

API 版本 2015-01-01119

Page 126: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南CreateElasticsearchDomain

响应元素

字段 数据类型 描述

DomainStatus ElasticsearchDomainStatus (p. 149)指定新 Amazon ES 域的状态和配置。

错误CreateElasticsearchDomain 可能返回以下错误:

• BaseException (p. )• DisabledOperationException (p. )• InternalException (p. )• InvalidTypeException (p. )• LimitExceededException (p. )• ResourceAlreadyExistsException (p. )• ValidationException (p. )

示例该示例演示以下内容:

• 创建名为 streaming-logs 的 Amazon ES 域• 通过 m3.medium.elasticsearch 实例类型的六个实例和三个相同类型的专用主节点配置群集• 启用区域感知• 为域配置 VPC 终端节点

请求

POST es.<AWS_REGION>.amazonaws.com/2015-01-01/es/domain{ "DomainName": "streaming-logs", "ElasticsearchVersion": "5.5", "ElasticsearchClusterConfig": { "InstanceType": "m3.medium.elasticsearch", "InstanceCount": 6, "DedicatedMasterEnabled": "true", "DedicatedMasterCount": 3, "DedicatedMasterType": "m3.medium.elasticsearch", "ZoneAwarenessEnabled": "true" }, "VPCOptions": { "SubnetIds": [ "subnet-87654321", "subnet-12345678" ] }, "EncryptionAtRestOptions": { "Enabled": true, "KmsKeyId": "1a2a3a4-1a2a-3a4a-5a6a-1a2a3a4a5a6a" }}

响应

API 版本 2015-01-01120

Page 127: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南DeleteElasticsearchDomain

HTTP/1.1 200 OKx-amzn-RequestId: 30b03e92-536f-11e5-9cd2-b36dbf43d89eContent-Type: application/jsonContent-Length: 645Date: Sat, 05 Sep 2015 01:41:15 GMT{ "DomainStatus": { "ARN": "arn:aws:es:us-west-1:123456789012:domain/streaming-logs", "AccessPolicies": "", "AdvancedOptions": { "rest.action.multi.allow_explicit_index": "true" }, "Created": true, "Deleted": false, "DomainId": "123456789012/streaming-logs", "DomainName": "streaming-logs", "EBSOptions": { "EBSEnabled": false, "EncryptionEnabled": null, "Iops": null, "VolumeSize": null, "VolumeType": null }, "ElasticsearchClusterConfig": { "DedicatedMasterCount": 3, "DedicatedMasterEnabled": true, "DedicatedMasterType": "m3.medium.elasticsearch", "InstanceCount": 6, "InstanceType": "m3.medium.elasticsearch", "ZoneAwarenessEnabled": true }, "ElasticsearchVersion": "5.5", "EncryptionAtRestOptions": { "Enabled": true, "KmsKeyId": "arn:aws:kms:us-west-1:123456789012:key/1a2a3a4-1a2a-3a4a-5a6a-1a2a3a4a5a6a" }, "Endpoint": null, "Endpoints": null, "Processing": true, "SnapshotOptions": { "AutomatedSnapshotStartHour": 0 }, "VPCOptions": { "AvailabilityZones": [ "us-west-1b", "us-west-1c" ], "SecurityGroupIds": [ "sg-12345678" ], "SubnetIds": [ "subnet-87654321", "subnet-12345678" ], "VPCId": "vpc-12345678" } }}

DeleteElasticsearchDomain删除 Amazon ES 域及其所有数据。域在删除后无法恢复。

API 版本 2015-01-01121

Page 128: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南DeleteElasticsearchDomain

语法

DELETE /2015-01-01/es/domain/<DOMAIN_NAME>

请求参数

参数 数据类型 必需? 说明

DomainName DomainName (p. 147) 是 您要删除的 Amazon ES 域的名称。

请求正文此操作不使用 HTTP 请求正文。

响应元素

字段 数据类型 描述

DomainStatus ElasticsearchDomainStatus (p. 149)指定特定 Amazon ES 域的配置。

错误DeleteElasticsearchDomain 操作可能返回以下错误:

• BaseException (p. )• InternalException (p. )• ResourceNotFoundException (p. )• ValidationException (p. )

示例以下示例将删除 weblogs 域:

请求

DELETE es.<AWS_REGION>.amazonaws.com/2015-01-01/es/domain/weblogs

响应

HTTP/1.1 200 OK{ "DomainStatus": { "ARN": "arn:aws:es:us-west-1:123456789012:domain/weblogs", "AccessPolicies": "", "AdvancedOptions": { "rest.action.multi.allow_explicit_index": "true"

API 版本 2015-01-01122

Page 129: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南DeleteElasticsearchServiceRole

}, "Created": true, "Deleted": true, "DomainId": "123456789012/weblogs", "DomainName": "weblogs", "EBSOptions": { "EBSEnabled": false, "EncryptionEnabled": null, "Iops": null, "VolumeSize": null, "VolumeType": null }, "ElasticsearchClusterConfig": { "DedicatedMasterCount": 3, "DedicatedMasterEnabled": true, "DedicatedMasterType": "m3.medium.elasticsearch", "InstanceCount": 6, "InstanceType": "m3.medium.elasticsearch", "ZoneAwarenessEnabled": true }, "ElasticsearchVersion": "5.5", "EncryptionAtRestOptions": { "Enabled": true, "KmsKeyId": "arn:aws:kms:us-west-1:123456789012:key/1a2a3a4-1a2a-3a4a-5a6a-1a2a3a4a5a6a" }, "Endpoint": null, "Endpoints": null, "Processing": true, "SnapshotOptions": { "AutomatedSnapshotStartHour": 0 }, "VPCOptions": { "AvailabilityZones": [ "us-west-1b", "us-west-1c" ], "SecurityGroupIds": [ "sg-12345678" ], "SubnetIds": [ "subnet-87654321", "subnet-12345678" ], "VPCId": "vpc-12345678" } }}

DeleteElasticsearchServiceRole删除 Amazon ES 和 Amazon EC2 之间的服务相关角色。这种角色赋予 Amazon ES 权限来将 VPC 终端节点放入 VPC 中。必须存在服务相关角色才能在域中创建 VPC 终端节点或者域才能正常工作。

Note

仅当没有任何域在使用服务相关角色时此操作才会成功。

语法

DELETE /2015-01-01/es/role

API 版本 2015-01-01123

Page 130: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南DescribeElasticsearchDomain

请求参数此操作不使用请求参数。

请求正文此操作不使用 HTTP 请求正文。

响应元素不适用。DeleteElasticsearchServiceRole 操作不返回数据结构。

错误DeleteElasticsearchServiceRole 可能返回以下错误:

• BaseException (p. )• InternalException (p. )• ValidationException (p. )

示例以下示例演示删除服务相关角色:

请求

DELETE es.<AWS_REGION>.amazonaws.com/2015-01-01/es/role

响应

如果成功,此操作不提供响应。

DescribeElasticsearchDomain描述指定 Amazon ES 域的域配置,其中包括域 ID、域服务终端节点和域 ARN。

语法GET /2015-01-01/es/domain/<DOMAIN_NAME>

请求参数

参数 数据类型 必需? 说明

DomainName DomainName (p. 147) 是 您要描述的Amazon ES 域的名称。

请求正文此操作不使用 HTTP 请求正文。

API 版本 2015-01-01124

Page 131: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南DescribeElasticsearchDomain

响应元素

字段 数据类型 描述

DomainStatus ElasticsearchDomainStatus (p. 149)指定 Amazon ES 域的配置。

错误DescribeElasticsearchDomain 可能返回以下错误:

• BaseException (p. )• InternalException (p. )• ResourceNotFoundException (p. )• ValidationException (p. )

示例以下示例返回对 streaming-logs 域的描述。

请求

GET es.<AWS_REGION>.amazonaws.com/2015-01-01/es/domain/streaming-logs

响应

{ "DomainStatus": { "ARN": "arn:aws:es:us-west-1:123456789012:domain/streaming-logs", "AccessPolicies": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Action\":\"es:*\",\"Resource\":\"arn:aws:es:us-west-1:123456789012:domain/streaming-logs/*\",\"Condition\":{\"IpAddress\":{\"aws:SourceIp\":[\"11.222.333.11\",\"11.222.333.12\",\"11.222.333.13\",\"11.222.333.14\",\"11.222.333.15\"]}}}]}", "AdvancedOptions": { "rest.action.multi.allow_explicit_index": "true" }, "Created": true, "Deleted": false, "DomainId": "123456789012/streaming-logs", "DomainName": "streaming-logs", "EBSOptions": { "EBSEnabled": true, "EncryptionEnabled": false, "Iops": null, "VolumeSize": 11, "VolumeType": "gp2" }, "ElasticsearchClusterConfig": { "DedicatedMasterCount": 2, "DedicatedMasterEnabled": false, "DedicatedMasterType": "m4.large.elasticsearch", "InstanceCount": 2, "InstanceType": "t2.small.elasticsearch", "ZoneAwarenessEnabled": false }, "ElasticsearchVersion": "5.5",

API 版本 2015-01-01125

Page 132: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南DescribeElasticsearchDomainConfig

"EncryptionAtRestOptions": { "Enabled": true, "KmsKeyId": "arn:aws:kms:us-west-1:123456789012:key/1a2a3a4-1a2a-3a4a-5a6a-1a2a3a4a5a6a" }, "Endpoint": "search-streaming-logs-oojmrbhufr27n44zdri52wukdy.us-west-1.es.amazonaws.com", "Endpoints": null, "Processing": false, "SnapshotOptions": { "AutomatedSnapshotStartHour": 8 }, "VPCOptions": null }}

DescribeElasticsearchDomainConfig显示一个 Amazon ES 域的配置。

语法GET /2015-01-01/es/domain/<DOMAIN_NAME>/config

请求参数

参数 数据类型 必需? 说明

DomainName DomainName (p. 147) 是 Amazon ES 域的名称。

请求正文此操作不使用 HTTP 请求正文。

响应元素

字段 数据类型 描述

DomainConfig ElasticsearchDomainConfig (p. 148)Amazon ES 域的配置。

错误DescribeElasticsearchDomainConfig 操作可能返回以下错误:

• BaseException (p. )• InternalException (p. )• ResourceNotFoundException (p. )

示例以下示例返回 logs 域的配置的描述:

API 版本 2015-01-01126

Page 133: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南DescribeElasticsearchDomainConfig

请求

GET es.<AWS_REGION>.amazonaws.com/2015-01-01/es/domain/logs/config

响应

HTTP/1.1 200 OK{ "DomainConfig": { "AccessPolicies": { "Options": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::123456789012:root\"},\"Action\":\"es:*\",\"Resource\":\"arn:aws:es:us-west-1:123456789012:domain/logs/*\"}]}", "Status": { "CreationDate": 1499817484.04, "PendingDeletion": false, "State": "Active", "UpdateDate": 1500308955.652, "UpdateVersion": 17 } }, "AdvancedOptions": { "Options": { "indices.fielddata.cache.size": "", "rest.action.multi.allow_explicit_index": "true" }, "Status": { "CreationDate": 1499817484.04, "PendingDeletion": false, "State": "Active", "UpdateDate": 1499818054.108, "UpdateVersion": 5 } }, "EBSOptions": { "Options": { "EBSEnabled": true, "EncryptionEnabled": false, "Iops": 0, "VolumeSize": 10, "VolumeType": "gp2" }, "Status": { "CreationDate": 1499817484.04, "PendingDeletion": false, "State": "Active", "UpdateDate": 1499818054.108, "UpdateVersion": 5 } }, "ElasticsearchClusterConfig": { "Options": { "DedicatedMasterCount": 2, "DedicatedMasterEnabled": false, "DedicatedMasterType": "m4.large.elasticsearch", "InstanceCount": 2, "InstanceType": "m4.large.elasticsearch", "ZoneAwarenessEnabled": false }, "Status": { "CreationDate": 1499817484.04, "PendingDeletion": false, "State": "Active", "UpdateDate": 1499966854.612,

API 版本 2015-01-01127

Page 134: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南DescribeElasticsearchDomainConfig

"UpdateVersion": 13 } }, "ElasticsearchVersion": { "Options": "5.5", "Status": { "PendingDeletion": false, "State": "Active", "CreationDate": 1436913638.995, "UpdateVersion": 6, "UpdateDate": 1436914324.278 }, "Options": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Action\":\"es:*\",\"Resource\":\"arn:aws:es:us-east-1:123456789012:domain/logs/*\"}]}" }, "EncryptionAtRestOptions": { "Options": { "Enabled": true, "KmsKeyId": "arn:aws:kms:us-west-1:123456789012:key/1a2a3a4-1a2a-3a4a-5a6a-1a2a3a4a5a6a" }, "Status": { "CreationDate": 1509490412.757, "PendingDeletion": false, "State": "Active", "UpdateDate": 1509490953.717, "UpdateVersion": 6 } }, "LogPublishingOptions":{ "Status":{ "CreationDate":1502774634.546, "PendingDeletion":false, "State":"Processing", "UpdateDate":1502779590.448, "UpdateVersion":60 }, "Options":{ "INDEX_SLOW_LOGS":{ "CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:123456789012:log-group:sample-domain", "Enabled":true }, "SEARCH_SLOW_LOGS":{ "CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:123456789012:log-group:sample-domain", "Enabled":true } } }, "SnapshotOptions": { "Options": { "AutomatedSnapshotStartHour": 6 }, "Status": { "CreationDate": 1499817484.04, "PendingDeletion": false, "State": "Active", "UpdateDate": 1499818054.108, "UpdateVersion": 5 } }, "VPCOptions": { "Options": { "AvailabilityZones": [

API 版本 2015-01-01128

Page 135: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南DescribeElasticsearchDomains

"us-west-1b" ], "SecurityGroupIds": [ "sg-12345678" ], "SubnetIds": [ "subnet-12345678" ], "VPCId": "vpc-12345678" }, "Status": { "CreationDate": 1499817484.04, "PendingDeletion": false, "State": "Active", "UpdateDate": 1499818054.108, "UpdateVersion": 5 } } }}

DescribeElasticsearchDomains描述最多五个指定 Amazon ES 域的域配置。其中包括域 ID、域服务终端节点和域 ARN 等信息。

语法

POST /2015-01-01/es/domain-info { "DomainNames": [ "<DOMAIN_NAME>", "<DOMAIN_NAME>", ]}

请求参数此操作不使用 HTTP 请求参数。

请求正文

字段 数据类型 必需? 说明

DomainNames DomainNameList (p. 147)是 Amazon ES 域的数组,采用以下格式:

{"DomainNames":["<Domain_Name>","<Domain_Name>"...]

响应元素

字段 数据类型 描述

DomainStatusList ElasticsearchDomainStatusList (p. 150)包含每个请求的 Amazon ES 域状态的列表。

API 版本 2015-01-01129

Page 136: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南DescribeElasticsearchDomains

错误DescribeElasticsearchDomains 操作可能返回以下错误:

• BaseException (p. )• InternalException (p. )• ValidationException (p. )

示例以下示例返回对 logs 和 streaming-logs 域的描述:

请求

POST es.<AWS_REGION>.amazonaws.com/2015-01-01/es/domain-info/{ "DomainNames": [ "logs", "streaming-logs" ]}

响应

HTTP/1.1 200 OK{ "DomainStatusList": [ { "ElasticsearchClusterConfig": { "DedicatedMasterEnabled": true, "InstanceCount": 3, "ZoneAwarenessEnabled": false, "DedicatedMasterType": "m3.medium.elasticsearch", "InstanceType": "m3.medium.elasticsearch", "DedicatedMasterCount": 3 }, "ElasticsearchVersion": "5.5", "EncryptionAtRestOptions": { "Enabled": true, "KmsKeyId": "arn:aws:kms:us-west-1:123456789012:key/1a2a3a4-1a2a-3a4a-5a6a-1a2a3a4a5a6a" }, "Endpoint": "search-streaming-logs-okga24ftzsbz2a2hzhsqw73jpy.us-east-1.es.example.com", "Created": true, "Deleted": false, "DomainName": "streaming-logs", "EBSOptions": { "EBSEnabled": false }, "VPCOptions": { "SubnetIds": [ "subnet-d1234567" ], "VPCId": "vpc-12345678", "SecurityGroupIds": [ "sg-123456789" ], "AvailabilityZones": [

API 版本 2015-01-01130

Page 137: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南DescribeElasticsearchDomains

"us-east-1" ] }, "SnapshotOptions": { "AutomatedSnapshotStartHour": 0 }, "DomainId": "123456789012/streaming-logs", "AccessPolicies": "", "Processing": false, "AdvancedOptions": { "rest.action.multi.allow_explicit_index": "true", "indices.fielddata.cache.size": "" }, "ARN": "arn:aws:es:us-east-1:123456789012:domain/streaming-logs" }, { "ElasticsearchClusterConfig": { "DedicatedMasterEnabled": true, "InstanceCount": 1, "ZoneAwarenessEnabled": false, "DedicatedMasterType": "search.m3.medium", "InstanceType": "search.m3.xlarge", "DedicatedMasterCount": 3 }, "ElasticsearchVersion": "5.5", "EncryptionAtRestOptions": { "Enabled": true, "KmsKeyId": "arn:aws:kms:us-west-1:123456789012:key/1a2a3a4-1a2a-3a4a-5a6a-1a2a3a4a5a6a" }, "Endpoint": "search-logs-p5st2kbt77diuihoqi6omd7jiu.us-east-1.es.example.com", "Created": true, "Deleted": false, "DomainName": "logs", "EBSOptions": { "Iops": 4000, "VolumeSize": 512, "VolumeType": "io1", "EBSEnabled": true }, "VPCOptions": { "SubnetIds": [ "subnet-d1234567" ], "VPCId": "vpc-12345678", "SecurityGroupIds": [ "sg-123456789" ], "AvailabilityZones": [ "us-east-1" ] }, "SnapshotOptions": { "AutomatedSnapshotStartHour": 0 }, "DomainId": "123456789012/logs", "AccessPolicies": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Action\":\"es:*\",\"Resource\":\"arn:aws:es:us-east-1:123456789012:domain/logs/*\"}]}", "Processing": false, "AdvancedOptions": { "rest.action.multi.allow_explicit_index": "true" }, "ARN": "arn:aws:es:us-east-1:123456789012:domain/logs" } ]

API 版本 2015-01-01131

Page 138: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南DescribeElasticsearchInstanceTypeLimits

}

DescribeElasticsearchInstanceTypeLimits描述给定 Elasticsearch 版本和实例类型的实例计数、存储和主节点限制。

语法

GET 2015-01-01/es/instanceTypeLimits/{ElasticsearchVersion}/{InstanceType}?domainName={DomainName}

请求参数

参数 数据类型 必需? 说明

ElasticsearchVersionString 是 Elasticsearch 版本。有关受支持的版本的列表,请参阅the section called “支持的Elasticsearch 版本” (p. 2)。

InstanceType String 是 实例类型. 要按区域查看实例类型,请参阅 AmazonElasticsearch Service 定价。

DomainName DomainName (p. 147) 否 现有域的名称。仅指定您是否需要针对现有域的限制。

请求正文此操作不使用 HTTP 请求正文。

响应元素

字段 数据类型 描述

LimitsByRole Map Map 包含所有适用的实例类型限制。"data" 指的是数据节点。"master"指的是专用主节点。

错误DescribeElasticsearchInstanceTypeLimits 操作可能返回以下错误:

• BaseException (p. )• InternalException (p. )• InvalidTypeException (p. )• LimitExceededException (p. )• ResourceNotFoundException (p. )• ValidationException (p. )

API 版本 2015-01-01132

Page 139: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南DescribeElasticsearchInstanceTypeLimits

示例以下示例返回对 logs 和 streaming-logs 域的描述:

请求

GET es.<AWS_REGION>.amazonaws.com/2015-01-01/es/instanceTypeLimits/6.0/m4.large.elasticsearch

响应

HTTP/1.1 200 OK{ "LimitsByRole": { "data": { "AdditionalLimits": [ { "LimitName": "MaximumNumberOfDataNodesWithoutMasterNode", "LimitValues": [ "10" ] } ], "InstanceLimits": { "InstanceCountLimits": { "MaximumInstanceCount": 20, "MinimumInstanceCount": 1 } }, "StorageTypes": [ { "StorageSubTypeName": "standard", "StorageTypeLimits": [ { "LimitName": "MaximumVolumeSize", "LimitValues": [ "100" ] }, { "LimitName": "MinimumVolumeSize", "LimitValues": [ "10" ] } ], "StorageTypeName": "ebs" }, { "StorageSubTypeName": "io1", "StorageTypeLimits": [ { "LimitName": "MaximumVolumeSize", "LimitValues": [ "512" ] }, { "LimitName": "MinimumVolumeSize", "LimitValues": [ "35" ] },

API 版本 2015-01-01133

Page 140: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南ListDomainNames

{ "LimitName": "MaximumIops", "LimitValues": [ "16000" ] }, { "LimitName": "MinimumIops", "LimitValues": [ "1000" ] } ], "StorageTypeName": "ebs" }, { "StorageSubTypeName": "gp2", "StorageTypeLimits": [ { "LimitName": "MaximumVolumeSize", "LimitValues": [ "512" ] }, { "LimitName": "MinimumVolumeSize", "LimitValues": [ "10" ] } ], "StorageTypeName": "ebs" } ] }, "master": { "AdditionalLimits": [ { "LimitName": "MaximumNumberOfDataNodesSupported", "LimitValues": [ "100" ] } ], "InstanceLimits": { "InstanceCountLimits": { "MaximumInstanceCount": 5, "MinimumInstanceCount": 2 } }, "StorageTypes": null } }}

ListDomainNames显示当前用户在活动区域中 拥有的所有 Amazon ES 域的名称。

语法GET /2015-01-01/domain

API 版本 2015-01-01134

Page 141: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南ListElasticsearchInstanceTypes

请求参数此操作不使用请求参数。

请求正文此操作不使用 HTTP 请求正文。

响应元素

字段 数据类型 描述

DomainNameList DomainNameList (p. 147) 当前用户拥有的所有 Amazon ES域的名称。

错误ListDomainNames 操作可能返回以下错误:

• BaseException (p. )• ValidationException (p. )

示例以下示例列出了当前用户拥有的所有三个域:

请求

GET es.<AWS_REGION>.amazonaws.com/2015-01-01/domain

响应

{ "DomainNames": [ { "DomainName": "logs" }, { "DomainName": "streaming-logs" } ]}

ListElasticsearchInstanceTypes列出给定 Elasticsearch 版本支持的所有 Elasticsearch 实例类型。

语法GET 2015-01-01/es/instanceTypes/{ElasticsearchVersion}?domainName={DomainName}&maxResults={MaxResults}&nextToken={NextToken}

API 版本 2015-01-01135

Page 142: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南ListElasticsearchInstanceTypes

请求参数

参数 数据类型 必需? 说明

ElasticsearchVersionString 是 Elasticsearch 版本。

DomainName String 否 Amazon ES 域名称。

MaxResults Integer 否 限制结果数。必须介于 30 和 100之间。

NextToken String 否 用于分页。仅当之前的 API 调用生成了包含 NextToken 的结果时需要。接受用于为下一个页面返回结果的 next-token 输入,并在响应中提供 next-token 输出,供客户端用于检索更多结果。

请求正文此操作不使用 HTTP 请求正文。

响应元素

字段 数据类型 描述

ElasticsearchInstanceTypesList 给定 Elasticsearch 版本支持的实例类型的列表。

NextToken String 用于分页。仅当之前的 API 调用生成了包含NextToken 的结果时需要。接受用于为下一个页面返回结果的 next-token 输入,并在响应中提供 next-token 输出,供客户端用于检索更多结果。

错误ListElasticsearchInstanceTypes 可能返回以下错误:

• BaseException (p. )• InternalException (p. )• ResourceNotFoundException (p. )• ValidationException (p. )

示例请求

GET es.<AWS_REGION>.amazonaws.com/2015-01-01/es/instanceTypes/6.0

响应

API 版本 2015-01-01136

Page 143: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南ListElasticsearchVersions

{ "ElasticsearchInstanceTypes": [ "t2.small.elasticsearch", "t2.medium.elasticsearch", "r4.large.elasticsearch", "r4.xlarge.elasticsearch", "r4.2xlarge.elasticsearch", "r4.4xlarge.elasticsearch", "r4.8xlarge.elasticsearch", "r4.16xlarge.elasticsearch", "m4.large.elasticsearch", "m4.xlarge.elasticsearch", "m4.2xlarge.elasticsearch", "m4.4xlarge.elasticsearch", "m4.10xlarge.elasticsearch", "c4.large.elasticsearch", "c4.xlarge.elasticsearch", "c4.2xlarge.elasticsearch", "c4.4xlarge.elasticsearch", "c4.8xlarge.elasticsearch" ], "NextToken": null}

ListElasticsearchVersions列出 Amazon ES 上所有受支持的 Elasticsearch 版本。

语法GET 2015-01-01/es/versions?maxResults={MaxResults}&nextToken={NextToken}

请求参数

参数 数据类型 必需? 说明

MaxResults Integer 非 限制结果数。必须介于 30 和 100之间。

NextToken String 否 用于分页。仅当之前的 API 调用生成了包含 NextToken 的结果时需要。接受用于为下一个页面返回结果的 next-token 输入,并在响应中提供 next-token 输出,供客户端用于检索更多结果。

请求正文此操作不使用 HTTP 请求正文。

响应元素

字段 数据类型 描述

ElasticsearchVersions List 列出所有受支持的 Elasticsearch 版本。

API 版本 2015-01-01137

Page 144: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南ListTags

字段 数据类型 描述

NextToken String 用于分页。仅当之前的 API 调用生成了包含NextToken 的结果时需要。接受用于为下一个页面返回结果的 next-token 输入,并在响应中提供 next-token 输出,供客户端用于检索更多结果。

错误ListElasticsearchVersions 可能返回以下错误:

• BaseException (p. )• InternalException (p. )• ResourceNotFoundException (p. )• ValidationException (p. )

示例请求

GET es.<AWS_REGION>.amazonaws.com/2015-01-01/es/versions

响应

{ "ElasticsearchVersions": [ "6.0", "5.5", "5.3", "5.1", "2.3", "1.5" ], "NextToken": null}

ListTags显示一个 Amazon ES 域的所有资源标签。

语法GET /2015-01-01/tags?arn=<DOMAIN_ARN>

请求参数

参数 数据类型 必需? 说明

ARN ARN (p. 146) 是 Amazon ES 域的 Amazon 资源名称(ARN)。

API 版本 2015-01-01138

Page 145: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南RemoveTags

请求正文此操作不使用 HTTP 请求正文。

响应元素

字段 数据类型 描述

TagList TagList (p. 153) 资源标签列表。有关更多信息,请参阅标记 AmazonElasticsearch Service 域 (p. 51)。

错误ListTags 操作可能返回以下错误:

• BaseException (p. )• ResourceNotFoundException (p. )• ValidationException (p. )• InternalException (p. )

示例以下示例列出了附加到 logs 域的标签:

请求

GET es.<AWS_REGION>.amazonaws.com/2015-01-01/tags?arn=arn:aws:es:us-west-1:123456789012:domain/logs

响应

HTTP/1.1 200 OK{ "TagList": [ { "Key": "Environment", "Value": "MacOS" }, { "Key": "project", "Value": "trident" } ]}

RemoveTags从 Amazon ES 域中移除指定的资源标签。

语法POST es.<AWS_REGION>.amazonaws.com/2015-01-01/tags-removal

API 版本 2015-01-01139

Page 146: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南RemoveTags

{ "ARN": "<DOMAIN_ARN>", "TagKeys": [ "<TAG_KEY>", "<TAG_KEY>", ... ]}

请求参数此操作不使用 HTTP 请求参数。

请求正文

参数 数据类型 必需? 说明

ARN ARN (p. 146) 是 Amazon ES 域的 Amazon 资源名称 (ARN)。有关更多信息,请参阅使用 AWS Identity andAccess Management 中的 IAM 实体的标识符。

TagKeys TagKey (p. 153) 是 您想从 Amazon ES 域移除的资源标签的标签键列表。

响应元素不适用。RemoveTags 操作不返回响应元素。

错误RemoveTags 操作可能返回以下错误:

• BaseException (p. )• ValidationException (p. )• InternalException (p. )

示例以下示例从 Amazon ES 域中删除标签键为 project 的资源标签:

请求

POST /2015-01-01/tags-removal{ "ARN": "<DOMAIN_ARN>", "TagKeys": [ "project" ]}

此操作不返回响应元素。

API 版本 2015-01-01140

Page 147: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南UpdateElasticsearchDomainConfig

UpdateElasticsearchDomainConfig修改 Amazon ES 域的配置,例如实例类型和实例数量。您只需指定要更新的值。

语法POST /2015-01-01/es/domain/<DOMAIN_NAME>/config{ "ElasticsearchClusterConfig": { "InstanceType": "<INSTANCE_TYPE>", "Instance_Count": <INSTANCE_COUNT>, "DedicatedMasterEnabled": "<TRUE|FALSE>", "DedicatedMasterCount": <INSTANCE_COUNT>, "DedicatedMasterType": "<INSTANCE_COUNT>", "ZoneAwarenessEnabled": "<TRUE|FALSE>" }, "EBSOptions": { "EBSEnabled": "<TRUE|FALSE>", "VolumeType": "<VOLUME_TYPE>", "VolumeSize": "<VOLUME_SIZE>", "Iops": "<VALUE>" }, "VPCOptions": { "SubnetIds": [ "<SUBNET_ID>" ], "SecurityGroupIds": [ "<SECURITY_GROUP_ID>" ] }, "AccessPolicies": "<ACCESS_POLICY_DOCUMENT>", "SnapshotOptions": { "AutomatedSnapshotStartHour": <START_HOUR>, "AdvancedOptions": { "rest.action.multi.allow_explicit_index": "<TRUE|FALSE>", "indices.fielddata.cache.size": "<PERCENTAGE_OF_HEAP>" } }, "LogPublishingOptions": { "SEARCH_SLOW_LOGS": { "CloudWatchLogsLogGroupArn":"<ARN>", "Enabled":true }, "INDEX_SLOW_LOGS": { "CloudWatchLogsLogGroupArn":"<ARN>", "Enabled":true } }}

请求参数此操作不使用 HTTP 请求参数。

请求正文

参数 数据类型 必需? 说明

DomainName DomainName (p. 147) 是 您要更新配置的 Amazon ES 域的名称。

API 版本 2015-01-01141

Page 148: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南UpdateElasticsearchDomainConfig

参数 数据类型 必需? 说明

ElasticsearchClusterConfigElasticsearchClusterConfig (p. 147)否 想要对群集配置进行的更改,例如实例类型和 EC2 实例数量。

EBSOptions EBSOptions (p. 147) 否 附加到数据节点的 EBS 卷的类型和大小。

VPCOptions VPCOptions (p. 154) 否 配置 Amazon ES 以便与 VPC 配合使用所需的值的容器。要了解更多信息,请参阅“Amazon ElasticsearchService 域的 VPC 支持 (p. 88)”。

SnapshotOptions SnapshotOptions (p. 152) 否 服务为 Amazon ES 域中的索引创建每日自动快照的时间。

AdvancedOptions AdvancedOptions (p. 145) 否 用于指定高级配置选项的键值对。有关更多信息,请参阅配置高级选项 (p. 24)。

AccessPolicies 字符串 否 指定 Amazon ES 域的访问策略。有关更多信息,请参阅配置访问策略 (p. 21)。

LogPublishingOptionsLogPublishingOptions (p. 151)否 键/值字符串配对以配置慢速日志发布。

响应元素

字段 数据类型 Description

DomainConfig 字符串 更新配置后 Amazon ES 域的状态。

错误UpdateElasticsearchDomainConfig 可能返回以下错误:

• BaseException (p. )• InternalException (p. )• InvalidTypeException (p. )• LimitExceededException (p. )• ValidationException (p. )

示例以下示例配置 streaming-logs 域在 GMT 凌晨 3 点开始创建每日自动快照:

请求

POST es.<AWS_REGION>.amazonaws.com/2015-01-01/es/domain/streaming-logs/config{ "SnapshotOptions": { "AutomatedSnapshotStartHour": 3

API 版本 2015-01-01142

Page 149: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南UpdateElasticsearchDomainConfig

}}

响应

{ "DomainConfig": { "AccessPolicies": { "Options": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Action\":\"es:*\",\"Resource\":\"arn:aws:es:us-west-1:123456789012:domain/streaming-logs/*\",\"Condition\":{\"IpAddress\":{\"aws:SourceIp\":[\"11.222.333.11\",\"11.222.333.12\",\"11.222.333.13\",\"11.222.333.14\",\"11.222.333.15\"]}}}]}", "Status": { "CreationDate": 1502213150.329, "PendingDeletion": false, "State": "Active", "UpdateDate": 1502213466.93, "UpdateVersion": 6 } }, "AdvancedOptions": { "Options": { "rest.action.multi.allow_explicit_index": "true" }, "Status": { "CreationDate": 1502213150.329, "PendingDeletion": false, "State": "Active", "UpdateDate": 1502213466.93, "UpdateVersion": 6 } }, "EBSOptions": { "Options": { "EBSEnabled": true, "EncryptionEnabled": false, "Iops": null, "VolumeSize": 11, "VolumeType": "gp2" }, "Status": { "CreationDate": 1502213150.329, "PendingDeletion": false, "State": "Active", "UpdateDate": 1502929669.653, "UpdateVersion": 23 } }, "ElasticsearchClusterConfig": { "Options": { "DedicatedMasterCount": 2, "DedicatedMasterEnabled": false, "DedicatedMasterType": "m4.large.elasticsearch", "InstanceCount": 2, "InstanceType": "t2.small.elasticsearch", "ZoneAwarenessEnabled": false }, "Status": { "CreationDate": 1502213150.329, "PendingDeletion": false, "State": "Active", "UpdateDate": 1502929669.653, "UpdateVersion": 23 }

API 版本 2015-01-01143

Page 150: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南UpdateElasticsearchDomainConfig

}, "ElasticsearchVersion": { "Options": "5.5", "Status": { "CreationDate": 1502213150.329, "PendingDeletion": false, "State": "Active", "UpdateDate": 1502213466.93, "UpdateVersion": 6 } }, "EncryptionAtRestOptions": { "Options": { "Enabled": true, "KmsKeyId": "arn:aws:kms:us-west-1:123456789012:key/1a2a3a4-1a2a-3a4a-5a6a-1a2a3a4a5a6a" }, "Status": { "CreationDate": 1509490412.757, "PendingDeletion": false, "State": "Active", "UpdateDate": 1509490953.717, "UpdateVersion": 6 } }, "LogPublishingOptions":{ "Options":{ "INDEX_SLOW_LOGS":{ "CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:123456789012:log-group:sample-domain", "Enabled":true }, "SEARCH_SLOW_LOGS":{ "CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:123456789012:log-group:sample-domain", "Enabled":true } }, "Status":{ "CreationDate":1502774634.546, "PendingDeletion":false, "State":"Processing", "UpdateDate":1502779590.448, "UpdateVersion":60 } }, "SnapshotOptions": { "Options": { "AutomatedSnapshotStartHour": 3 }, "Status": { "CreationDate": 1502213150.329, "PendingDeletion": false, "State": "Active", "UpdateDate": 1503093165.447, "UpdateVersion": 25 } }, "VPCOptions": { "Options": { "AvailabilityZones": null, "SecurityGroupIds": null, "SubnetIds": null, "VPCId": null }, "Status": {

API 版本 2015-01-01144

Page 151: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南数据类型

"CreationDate": 1503093165.597, "PendingDeletion": false, "State": "Active", "UpdateDate": 1503093165.597, "UpdateVersion": 25 } } }}

数据类型本部分描述了 REST 配置 API 使用的数据类型。

AdvancedOptions指定高级 Elasticsearch 配置选项的键-值字符串对。

字段 数据类型 描述

rest.action.multi.allow_explicit_index键值对:

rest.action.multi.allow_explicit_index=<true|false>

指定是否允许在 HTTP请求正文中显式引用索引。如果您要为域子资源 (例如特定的索引和域API) 配置访问策略,则必须禁用此属性。有关更多信息,请参阅基于URL 的访问控制。有关子资源访问策略的更多信息,请参阅配置访问策略 (p. 21)。

indices.fielddata.cache.size键值对:

indices.fielddata.cache.size=<percentage_of_heap>

指定分配到字段数据的 Java 堆空间的百分比。默认情况下,此设置是无界的。有关更多信息,请参阅Elasticsearch 文档中的字段数据。

indices.query.bool.max_clause_count键值对:

indices.query.bool.max_clause_count=<int>

指定 Lucene 布尔查询中允许的子句的最大数量。默认值为1024。如果查询具有的子句数超过了允许的子句数,则会导致TooManyClauses 错误。要了解更多信息,请参阅 Lucene 文档。

AdvancedOptionsStatusAmazon ES 域高级配置选项的更新状态。

API 版本 2015-01-01145

Page 152: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南ARN

字段 数据类型 描述

选项 AdvancedOptions (p. 145) 用于指定高级 Elasticsearch 配置选项的键值对。

Status OptionStatus (p. 152) Amazon ES 域高级配置选项的更新状态。

ARN

字段 数据类型 Description

ARN 字符串 Amazon ES 域的 Amazon 资源名称(ARN)。有关更多信息,请参阅 AWSIdentity and Access Management 文档中的IAM ARN。

CreateElasticsearchDomainRequestCreateElasticsearchDomain 服务操作所需的参数的容器。

字段 数据类型 描述

DomainName DomainName (p. 147) 要创建的 Amazon ES 域的名称。

ElasticsearchClusterConfigElasticsearchClusterConfig (p. 147)Amazon ES 域的群集配置的容器。

EBSOptions EBSOptions (p. 147) 为 Amazon ES 域启用基于 EBS 的存储所需的参数的容器。有关更多信息,请参阅配置基于 EBS 的存储 (p. 19)。

AccessPolicies 字符串 为新的 Amazon ES 域指定访问策略的 IAM策略文档。有关更多信息,请参阅配置访问策略 (p. 21)。

SnapshotOptions SnapshotOptionsStatus (p. 153)配置域索引自动快照所需的参数的容器。有关更多信息,请参阅配置快照 (p. 23)。

VPCOptions VPCOptions (p. 154) 配置 Amazon ES 以便与 VPC 配合使用所需的值的容器。

LogPublishingOptions LogPublishingOptions (p. 151)键/值字符串配对以配置慢速日志发布。

SnapshotOptions SnapshotOptionsStatus (p. 153)配置域索引自动快照所需的参数的容器。有关更多信息,请参阅配置快照 (p. 23)。

AdvancedOptions AdvancedOptionsStatus (p. 145)用于指定高级配置选项的键值对。

API 版本 2015-01-01146

Page 153: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南DomainID

DomainID

数据类型 Description

字符串 Amazon ES 域的唯一标识符

DomainNameAmazon ES 域的名称。

数据类型 Description

字符串 Amazon ES 域的名称。域名在一个 AWS 区域内相同账户拥有的所有域中是唯一的。域名必须以小写字母开头,且必须包含 3 到 28 个字符。有效的字符包括 a-z (仅小写字母)、0-9 和 – (连字符)。

DomainNameListAmazon ES 域名的字符串。

数据类型 描述

字符串数组 Amazon ES 域的数组,采用以下格式:

["<Domain_Name>","<Domain_Name>"...]

EBSOptions为 Amazon ES 域启用基于 EBS 的存储所需的参数的容器。有关更多信息,请参阅配置基于 EBS 的存储 (p. 19)。

字段 数据类型 描述

EBSEnabled Boolean 指定 EBS 卷是否附加到 Amazon ES 域中的数据节点。

VolumeType 字符串 指定附加到数据节点的 EBS 卷的类型。

VolumeSize 字符串 指定附加到数据节点的 EBS 卷的大小。

Iops 字符串 指定附加到数据节点的 EBS 卷的基准输入/输出 (I/O) 性能。仅适用于预配置 IOPS EBS 卷类型。

ElasticsearchClusterConfigAmazon ES 域的群集配置的容器。

API 版本 2015-01-01147

Page 154: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南ElasticsearchDomainConfig

字段 数据类型 Description

InstanceType 字符串 群集中的数据节点的实例类型。

InstanceCount 整数 群集中的实例数量。

DedicatedMasterEnabled Boolean 指示是否为群集启用专用主节点。True 如果群集使用专用主节点。False 如果群集不使用专用主节点。有关更多信息,请参阅关于专用主节点 (p. 83)。

DedicatedMasterType 字符串 群集中的专用主节点的 Amazon ES 实例类型。

DedicatedMasterCount 整数 群集中专用主节点的数量。

ZoneAwarenessEnabled Boolean 指示是否启用区域感知。区域感知在相同区域的两个可用区之间分配属于一个群集的节点和副本索引分片。

如果启用区域感知,则您必须在实例计数中具有偶数数目的实例,而且您还必须使用 Amazon ES 配置API 为您的 Elasticsearch 群集复制数据。有关更多信息,请参阅启用区域感知 (p. 41)。

ElasticsearchDomainConfigAmazon ES 域配置的容器。

字段 数据类型 Description

ElasticsearchVersion 字符串 Elasticsearch 版本。

ElasticsearchClusterConfig ElasticsearchClusterConfig (p. 147)Amazon ES 域的群集配置的容器。

EBSOptions EBSOptions (p. 147) 为 Amazon ES 域配置的 EBS 选项的容器。

AccessPolicies 字符串 指定 Amazon ES 域的访问策略。有关更多信息,请参阅配置访问策略 (p. 21)。

SnapshotOptions SnapshotOptionsStatus (p. 153)服务为 Amazon ES 域中的索引创建每日自动快照的时间。有关更多信息,请参阅配置快照 (p. 23)。

VPCOptions VPCDerivedInfoStatus (p. 154)域的当前 VPCOptions (p. 154)以及其配置的任何更新状态。

LogPublishingOptions LogPublishingOptions (p. 151)用于配置慢速日志发布的键值对。

AdvancedOptions AdvancedOptionsStatus (p. 145)用于指定高级配置选项的键值对。

EncryptionAtRestOptions EncryptionAtRestOptionsStatus (p. 150)用于至少启用加密的键值对。

API 版本 2015-01-01148

Page 155: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南ElasticsearchDomainStatus

ElasticsearchDomainStatusDomainStatus 数据结构中的内容的容器。

字段 数据类型 描述

DomainID DomainID (p. 147) Amazon ES 域的唯一标识符。

DomainName DomainName (p. 147) Amazon ES 域的名称。域名在一个 AWS 区域内相同账户拥有的所有域中是唯一的。域名必须以小写字母开头,且必须包含 3 到 28个字符。有效的字符包括 a-z (仅小写字母)、0-9 和 – (连字符)。

ARN ARN (p. 146) Amazon ES 域的 Amazon 资源名称 (ARN)。有关更多信息,请参阅使用 AWS Identity and AccessManagement 中的 IAM 实体的标识符。

Created Boolean Amazon ES 域的创建状态。True 如果域创建已完成。False 如果域创建仍在进行中。

Deleted Boolean Amazon ES 域的删除状态。True 如果域删除已完成。False 如果域删除仍在进行中。

Endpoint ServiceUrl (p. 152) 用于向 Amazon ES 域提交索引、搜索和数据上传请求的特定于域的终端节点。

Endpoints EndpointsMap (p. 151) 当 Amazon ES 域使用 VPC 终端节点时存在的键值对。

Processing Boolean Amazon ES 域配置的更改状态。True 如果服务仍在处理配置更改。False 如果配置更改处于活动状态。您必须等待域达到活动状态才能提交索引、搜索和数据上传请求。

ElasticsearchVersion 字符串 Elasticsearch 版本。

ElasticsearchClusterConfig ElasticsearchClusterConfig (p. 147)Amazon ES 域的群集配置的容器。

EBSOptions EBSOptions (p. 147) 为 Amazon ES 域启用基于 EBS的存储所需的参数的容器。有关更多信息,请参阅配置基于 EBS的存储 (p. 19)。

AccessPolicies 字符串 为新的 Amazon ES 域指定访问策略的 IAM 策略文档。有关

API 版本 2015-01-01149

Page 156: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南ElasticsearchDomainStatusList

字段 数据类型 描述更多信息,请参阅配置访问策略 (p. 21)。

SnapshotOptions SnapshotOptions (p. 152) 配置创建 Amazon ES 域索引的每日自动快照时间所需的参数的容器。

VPCOptions VPCDerivedInfo (p. 154) Amazon ES 基于域的VPCOptions (p. 154) 派生的信息。

LogPublishingOptions LogPublishingOptions (p. 151)用于配置慢速日志发布的键值对。

AdvancedOptions AdvancedOptions (p. 145) 用于指定高级配置选项的键值对。

EncryptionAtRestOptions EncryptionAtRestOptions (p. 150)用于至少启用加密的键值对。

ElasticsearchDomainStatusList包含每个指定的 Amazon ES 域状态的列表。

字段 数据类型 描述

DomainStatusList ElasticsearchDomainStatus (p. 149)包含每个指定的 Amazon ES域状态的列表。

EncryptionAtRestOptions指定域是否应加密静态数据,如果应加密,则使用 AWS Key Management Service (KMS) 密钥。只能用于创建新域,而不能用于更新现有域。

字段 数据类型 描述

Enabled Boolean 指定 true 以启用静态加密。

KmsKeyId 字符串 KMS 密钥 ID。采用形式1a2a3a4-1a2a-3a4a-5a6a-1a2a3a4a5a6a。

EncryptionAtRestOptionsStatus域的静态加密选项的状态。

字段 数据类型 描述

Options EncryptionAtRestOptions (p. 150) 域的静态加密选项。

Status OptionStatus (p. 152) 域的静态加密选项的状态。

API 版本 2015-01-01150

Page 157: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南EndpointsMap

EndpointsMap包含 VPC 终端节点的键–值对。仅当 Amazon ES 域位于 VPC 中时才存在。

字段 数据类型 描述

Endpoints 键-值字符串对:"vpc":"<VPC_ENDPOINT>"

域的 VPC 终端节点。

LogPublishingOptions指定 Amazon ES 域是否将 Elasticsearch 慢速日志发布到 Amazon CloudWatch。您仍然必须使用Elasticsearch REST API 来启用慢速日志收集。要了解更多信息,请参阅“the section called “设置Elasticsearch 日志记录阈值” (p. 27)”。

字段 数据类型 描述

Endpoints 键/值: "vpc": "<VPC_ENDPOINT>" 域的 VPC 终端节点。

INDEX_SLOW_LOGS 键/值 两个键/值对,用于定义CloudWatch 日志组,以及Elasticsearch 索引慢速日志是否应该发布到该处:

"CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:264071961897:log-group:sample-domain","Enabled":true

SEARCH_SLOW_LOGS 键/值 两个键/值对,用于定义CloudWatch 日志组,以及Elasticsearch 搜索慢速日志是否应该发布到该处:

"CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:264071961897:log-group:sample-domain","Enabled":true

LogPublishingOptionsStatusAmazon ES 域的慢速日志发布选项配置的更新状态。

字段 数据类型 描述

Options LogPublishingOptions (p. 151) 域的慢速日志发布选项

Status OptionStatus (p. 152) Amazon ES 域快照选项的更新状态

API 版本 2015-01-01151

Page 158: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南OptionState

OptionStateAmazon ES 域高级选项的更新状态。

字段 数据类型 Description

OptionStatus 字符串 三个有效值之一:

• RequiresIndexDocuments• 处理• 处于活动状态

OptionStatusAmazon ES 域配置选项的更新状态。

字段 数据类型 描述

CreationDate 时间戳 创建 Amazon ES 域的日期和时间

UpdateDate 时间戳 更新 Amazon ES 域的日期和时间

UpdateVersion 整数 用于指定实体的最新版本的整数

State OptionState (p. 152) Amazon ES 域配置选项的更新状态

PendingDeletion Boolean 指示服务是否正在处理永久删除 Amazon ES域及其所有资源的请求

ServiceURL用于向 Amazon ES 域提交索引、搜索和数据上传请求的特定于域的终端节点。

字段 数据类型 Description

ServiceURL 字符串 用于向 Amazon ES 域提交索引、搜索和数据上传请求的特定于域的终端节点

SnapshotOptions配置在 Amazon ES 域中创建索引每日自动快照的时间所需的参数的容器。

字段 数据类型 描述

AutomatedSnapshotStartHour 整数 服务为 Amazon ES 域中的索引创建每日自动快照的时间

API 版本 2015-01-01152

Page 159: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南SnapshotOptionsStatus

SnapshotOptionsStatusAmazon ES 域的每日自动快照配置更新的状态。

字段 数据类型 描述

Options SnapshotOptions (p. 152) 配置在 Amazon ES 域中创建索引每日自动快照的时间所需的参数的容器

Status OptionStatus (p. 152) Amazon ES 域快照选项的更新状态

标签

字段 数据类型 描述

Key TagKey (p. 153) 标签的必填名称。标签键在其附加的 Amazon ES域中必须是唯一的。有关更多信息,请参阅标记Amazon Elasticsearch Service 域 (p. 51)。

Value TagValue (p. 153) 标签的可选字符串值。标签值可为空值,且在标签集中不必具有唯一性。例如,在“项目/Trinity”和“成本 - 中心/Trinity”的一个标签集中,可以存在密钥值对。

TagKey

字段 数据类型 Description

Key 字符串 标签的名称。字符串最多可包含 128 个字符。

TagList

字段 数据类型 描述

Tag Tag (p. 153) 附加到 Amazon ES 域的资源标签。

TagValue

字段 数据类型 Description

Value 字符串 保存 TagKey 的值。字符串最多可包含 256 个字符。

API 版本 2015-01-01153

Page 160: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南VPCDerivedInfo

VPCDerivedInfo

字段 数据类型 Description

VPCId 字符串 您的 VPC 的 ID。当您创建 VPC 时 Amazon VPC生成此值。

SubnetIds StringList 与域的 VPC 终端节点关联的子网 ID 列表。有关更多信息,请参阅 Amazon VPC 用户指南 中的 VPC和子网。

AvailabilityZones StringList 与 VPC 子网关联的可用区列表。有关更多信息,请参阅 Amazon VPC 用户指南 中的 VPC 和子网基础。

SecurityGroupIds StringList 与域的 VPC 终端节点关联的安全组 ID 列表。有关更多信息,请参阅 Amazon VPC 用户指南 中的您的 VPC 的安全组。

VPCDerivedInfoStatus

字段 数据类型 描述

Options VPCDerivedInfo (p. 154)Amazon ES 基于域的 VPCOptions (p. 154) 派生的信息。

Status OptionStatus (p. 152)Amazon ES 域的 VPC 配置选项的更新状态。

VPCOptions

字段 数据类型 描述

SubnetIds StringList 与域的 VPC 终端节点关联的子网 ID 列表。如果您的域启用了区域感知,则您需要提供两个子网 ID,每个区域一个。否则,只需要提供一个。有关更多信息,请参阅 Amazon VPC 用户指南 中的 VPC 和子网。

SecurityGroupIds StringList 与域的 VPC 终端节点关联的安全组 ID 列表。如果不提供安全组 ID, Amazon ES 将使用 VPC 的默认安全组。有关更多信息,请参阅 Amazon VPC 用户指南 中的您的 VPC 的安全组。

VPCOptionsStatus

字段 数据类型 描述

Options VPCOptions (p. 154) 配置 Amazon ES 以便与 VPC 配合使用所需的值的容器。

API 版本 2015-01-01154

Page 161: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南错误

字段 数据类型 描述

Status OptionStatus (p. 152)Amazon ES 域的 VPC 配置选项的更新状态。

错误Amazon ES 会引发以下错误:

例外 描述

BaseException 由所有服务错误引发。包含错误的 HTTP 状态代码。

ValidationException 在 HTTP 请求包含无效输入或缺少必需的输入时引发。返回 HTTP状态代码 400。

DisabledOperationException 在客户端尝试执行不支持的操作时引发。返回 HTTP 状态代码409。

InternalException 处理请求期间服务内部出现错误时引发。返回 HTTP 状态代码500。

InvalidTypeException 尝试创建或访问无效或不支持的 Amazon ES 域子资源时引发。返回 HTTP 状态代码 409。

LimitExceededException 尝试创建的 Amazon ES 域资源和子资源超过允许的数量时引发。返回 HTTP 状态代码 409。

ResourceNotFoundException 访问或删除不存在的资源时引发。返回 HTTP 状态代码 400。

ResourceAlreadyExistsException客户端尝试创建 Amazon ES 域中已存在的资源时引发。返回HTTP 状态代码 400。

API 版本 2015-01-01155

Page 162: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南群集和实例限制

Amazon Elasticsearch Service 限制以下各表显示 Amazon ES 资源的限制,包括每个群集的实例数量、EBS 卷的最小和最大大小以及网络限制。

群集和实例限制下表显示了 Amazon ES 对群集和实例的限制。

群集和实例 Limit

每个群集的最大实例数 (实例数量) 20 (T2 实例类型除外,该实例类型最多只能有 10 个)

Note

每个域的默认限制为 20 个实例。要请求将每个域的实例数提高到最多 100 个 (对于 Elasticsearch 2.3 或更高版本),请通过 AWS 支持中心创建案例。有关请求提高限制的更多信息,请参阅 AWS 服务限制。

专用主节点的最大数量 5

Note

只有在实例数量小于等于 10 时,您才能使用 T2 实例类型作为专用主节点。

Elasticsearch 版本支持的最小实例类型

t2.micro.elasticsearch (版本 1.5 和 2.3) 和t2.small.elasticsearch (版本 5.x 和 6。x).

有关 Amazon ES 支持的实例类型的列表,请参阅支持的实例类型 (p. 105)。

EBS 卷大小限制下表为 Amazon ES 支持的每个实例类型显示了 EBS 卷的最小容量和最大容量。有关哪些实例类型提供了实例存储的信息,请参阅 Amazon Elasticsearch Service 定价。

Note

如果您在创建域时选择了 EBS volume type 下的磁性存储,则最大卷对于除 t2.micro、t2.small 和t2.medium 之外的所有实例类型均为 100 GB。对于下表中列出的最大大小,请选择 SSD 选项之一。

实例类型 最小 EBS 容量 最大 EBS 容量

t2.micro.elasticsearch 10GB 35 GB

t2.small.elasticsearch 10GB 35 GB

t2.medium.elasticsearch 10GB 35 GB

m3.medium.elasticsearch 10GB 100 GB

m3.large.elasticsearch 10GB 512 GB

API 版本 2015-01-01156

Page 163: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南EBS 卷大小限制

实例类型 最小 EBS 容量 最大 EBS 容量

m3.xlarge.elasticsearch 10GB 512 GB

m3.2xlarge.elasticsearch 10GB 512 GB

m4.large.elasticsearch 10GB 512 GB

m4.xlarge.elasticsearch 10GB 1TB*

m4.2xlarge.elasticsearch 10GB 1.5 TB*

m4.4xlarge.elasticsearch 10GB 1.5 TB*

m4.10xlarge.elasticsearch 10GB 1.5 TB*

c4.large.elasticsearch 10GB 100 GB

c4.xlarge.elasticsearch 10GB 512 GB

c4.2xlarge.elasticsearch 10GB 1TB*

c4.4xlarge.elasticsearch 10GB 1.5 TB*

c4.8xlarge.elasticsearch 10GB 1.5 TB*

r3.large.elasticsearch 10GB 512 GB

r3.xlarge.elasticsearch 10GB 512 GB

r3.2xlarge.elasticsearch 10GB 512 GB

r3.4xlarge.elasticsearch 10GB 512 GB

r3.8xlarge.elasticsearch 10GB 512 GB

r4.large.elasticsearch 10GB 1TB*

r4.xlarge.elasticsearch 10GB 1.5 TB*

r4.2xlarge.elasticsearch 10GB 1.5 TB*

r4.4xlarge.elasticsearch 10GB 1.5 TB*

r4.8xlarge.elasticsearch 10GB 1.5 TB*

r4.16xlarge.elasticsearch 10GB 1.5 TB*

i2.xlarge.elasticsearch 10GB 512 GB

i2.2xlarge.elasticsearch 10GB 512 GB

i3.large.elasticsearch 不适用 不适用

i3.xlarge.elasticsearch 不适用 不适用

i3.2xlarge.elasticsearch 不适用 不适用

i3.4xlarge.elasticsearch 不适用 不适用

i3.8xlarge.elasticsearch 不适用 不适用

i3.16xlarge.elasticsearch 不适用 不适用

API 版本 2015-01-01157

Page 164: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南网络限制

* 512 GB 是 Elasticsearch 版本 1.5 支持的最大卷容量。

网络限制下表显示了 HTTP 请求负载的最大值。

实例类型 HTTP 请求负载的最大值

t2.micro.elasticsearch 10 MB

t2.small.elasticsearch 10 MB

t2.medium.elasticsearch10 MB

m3.medium.elasticsearch10 MB

m3.large.elasticsearch 10 MB

m3.xlarge.elasticsearch100MB

m3.2xlarge.elasticsearch100MB

m4.large.elasticsearch 10 MB

m4.xlarge.elasticsearch100MB

m4.2xlarge.elasticsearch100MB

m4.4xlarge.elasticsearch100MB

m4.10xlarge.elasticsearch100MB

c4.large.elasticsearch 10 MB

c4.xlarge.elasticsearch100MB

c4.2xlarge.elasticsearch100MB

c4.4xlarge.elasticsearch100MB

c4.8xlarge.elasticsearch100MB

r3.large.elasticsearch 10 MB

r3.xlarge.elasticsearch100MB

r3.2xlarge.elasticsearch100MB

r3.4xlarge.elasticsearch100MB

r3.8xlarge.elasticsearch100MB

r4.large.elasticsearch 100MB

r4.xlarge.elasticsearch100MB

r4.2xlarge.elasticsearch100MB

r4.4xlarge.elasticsearch100MB

r4.8xlarge.elasticsearch100MB

API 版本 2015-01-01158

Page 165: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南Java 进程限制

实例类型 HTTP 请求负载的最大值

r4.16xlarge.elasticsearch100MB

i2.xlarge.elasticsearch100MB

i2.2xlarge.elasticsearch100MB

i3.large.elasticsearch 100MB

i3.xlarge.elasticsearch100MB

i3.2xlarge.elasticsearch100MB

i3.4xlarge.elasticsearch100MB

i3.8xlarge.elasticsearch100MB

i3.16xlarge.elasticsearch100MB

Java 进程限制Amazon ES 将 Java 进程的堆大小限制为 32 GB。高级用户可指定用于字段数据的堆的百分比。有关更多信息,请参阅 the section called “配置高级选项” (p. 24) 和 the section called “JVM 内存不足错误” (p. 98)。

API 版本 2015-01-01159

Page 166: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南适用于 Amazon ES 的服务相关角色权限

使用适用于 Amazon ES 的服务相关角色

Amazon Elasticsearch Service 使用了 AWS Identity and Access Management (IAM) 服务相关角色。服务相关角色是一种与 Amazon ES 直接关联的独特类型的 IAM 角色。服务相关角色由 Amazon ES 定义,并具有该服务代表您调用其他 AWS 服务所需的一切权限。

服务相关角色可让您更轻松地设置 Amazon ES,因为您不必手动添加必要的权限。Amazon ES 定义了其服务相关角色的权限,除非另外定义,否则只有 Amazon ES 可以代入该角色。定义的权限包括信任策略和权限策略,以及不能附加到任何其他 IAM 实体的权限策略。

只有在首先删除服务相关角色的相关资源后,才能删除该角色。这将保护您的 Amazon ES 资源,因为您无法无意中删除对资源的访问权限。

有关支持服务相关角色的其他服务的信息,请参阅与 IAM 配合使用的 AWS 服务并查找 Service-Linked Role列为 Yes 的服务。选择 Yes 与查看该服务的服务相关角色文档的链接。

适用于 Amazon ES 的服务相关角色权限Amazon ES 使用名为 AWSServiceRoleForAmazonElasticsearchService 的服务相关角色。

AWSServiceRoleForAmazonElasticsearchService 服务相关角色仅信任以下服务来代入该角色:

• es.amazonaws.com

角色权限策略允许 Amazon ES 对指定资源完成以下操作:

• 操作:* 上的 ec2:CreateNetworkInterface• 操作:* 上的 ec2:DeleteNetworkInterface• 操作:* 上的 ec2:DescribeNetworkInterfaces• 操作:* 上的 ec2:ModifyNetworkInterfaceAttribute• 操作:* 上的 ec2:DescribeSecurityGroups• 操作:* 上的 ec2:DescribeSubnets

您必须配置权限以允许 IAM 实体 (例如,用户、组或角色) 创建、编辑或删除服务相关角色。有关更多信息,请参阅 IAM 用户指南 中的服务相关角色权限。

创建适用于 Amazon ES 的服务相关角色您无需手动创建服务相关角色。当您使用 AWS 管理控制台创建 VPC 访问域时,Amazon ES 将为您创建服务相关角色。为使这种自动创建成功,您必须具有 iam:CreateServiceLinkedRole 操作的权限。

如果您删除了此服务相关角色然后需要再次创建它,则可以使用相同的流程在您的账户中重新创建此角色。

您还可以使用 IAM 控制台、IAM CLI 或 IAM API 来手动创建服务相关角色。有关更多信息,请参阅 IAM 用户指南 中的创建服务相关角色。

API 版本 2015-01-01160

Page 167: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南编辑适用于 Amazon ES 的服务相关角色

编辑适用于 Amazon ES 的服务相关角色Amazon ES 不允许您编辑 AWSServiceRoleForAmazonElasticsearchService 服务相关角色。创建服务相关角色后,您将无法更改角色的名称,因为可能有多种实体引用该角色。不过,您可以使用 IAM 编辑角色的说明。有关更多信息,请参阅 IAM 用户指南 中的编辑服务相关角色。

删除适用于 Amazon ES 的服务相关角色如果您不再需要使用某个需要服务相关角色的功能或服务,我们建议您删除该角色。这样您就没有未被主动监控或维护的未使用实体。但是,您必须先清除您的服务相关角色,然后才能手动删除它。

清除服务相关角色在您可以使用 IAM 删除服务相关角色之前,必须先确认该角色没有活动会话并删除该角色使用的任何资源。

检查服务相关角色是否在 IAM 控制台中有活动会话

1. 登录 AWS 管理控制台 并通过以下网址打开 IAM 控制台 https://console.aws.amazon.com/iam/。2. 在 IAM 控制台的导航窗格中,选择角色。然后选择 AWSServiceRoleForAmazonElasticsearchService

角色的名称 (不是复选框)。3. 在所选角色的 Summary 页面上,选择 Access Advisor 选项卡。4. 在 Access Advisor 选项卡上,查看服务相关角色的近期活动。

Note

如果您不确定 Amazon ES 是否正在使用 AWSServiceRoleForAmazonElasticsearchService角色,您可以尝试删除该角色。如果服务正在使用该角色,则删除操作会失败,并且您可以查看正在使用该角色的区域。如果该角色已被使用,则您必须等待会话结束,然后才能删除该角色。您无法撤销服务相关角色对会话的权限。

删除由 AWSServiceRoleForAmazonElasticsearchService 使用的 Amazon ES 资源

1. 登录 AWS 管理控制台并打开 Amazon ES 控制台。2. 删除在 Endpoint 列的下方列出 VPC 的任何域。

手动删除服务相关角色使用 Amazon ES 配置 API 删除 AWSServiceRoleForAmazonElasticsearchService 服务相关角色。有关更多信息,请参阅 the section called “DeleteElasticsearchServiceRole” (p. 123)。

API 版本 2015-01-01161

Page 168: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南

Amazon Elasticsearch Service 的文档历史记录

本主题介绍了 Amazon Elasticsearch Service (Amazon ES) 文档的重要更改。

此历史记录的相关日期:

• 当前产品版本—2015-01-01• 产品最新发布时间 – 2018 年 3 月 14 日• 文档最新更新时间 – 2018 年 3 月 14 日

更改 描述 发行日期

Elasticsearch 6.2 支持 Amazon Elasticsearch Service 现已支持 Elasticsearch 版本 6.2。有关 6.0 以来的变更摘要,请参阅 Elasticsearch6.1、Elasticsearch 6.2、Kibana 6.1 和 Kibana 6.2 的发行说明。

2018 年 3 月14 日

韩语分析插件 Amazon ES 现已支持 seunjeon 韩语分析插件的内存优化版本。 2018 年 3 月13 日

实例访问控制更新 对 Amazon ES 域中访问控制策略的更改现在可立即生效。 2018 年 3 月7 日

PB 规模 Amazon ES 现在支持 i3 实例类型和多达 1.5 PB 的总域存储空间。要了解更多信息,请参阅“PB 规模 (p. 87)”。

2017 年 12 月19 日

静态数据加密 Amazon ES 现在支持静态数据加密。要了解更多信息,请参阅“静态加密 (p. 94)”。

2017 年 12 月7 日

Elasticsearch 6.0 支持 Amazon Elasticsearch Service 现在支持 Elasticsearch 版本6.0。有关这些更改的摘要,请参阅 Elasticsearch 6.0 发行说明。有关迁移方面的注意事项和说明,请参阅 迁移到不同的Elasticsearch 版本 (p. 74)。

2017 年 12 月6 日

VPC 支持 Amazon Elasticsearch Service 现在允许您在 Amazon VirtualPrivate Cloud 中启动域。VPC 支持提供了额外的安全层并简化了 Amazon ES 和 VPC 中的其他服务之间的通信。要了解更多信息,请参阅“VPC 支持 (p. 88)”。

2017 年 10 月17 日

慢速日志发布 Amazon Elasticsearch Service 现在支持将慢速日志发布到CloudWatch Logs。要了解更多信息,请参阅“the section called“配置慢速日志” (p. 25)”。

2017 年 10 月16 日

Elasticsearch 5.5 支持 Amazon Elasticsearch Service 现支持 Elasticsearch 版本 5.5。

有关新功能摘要,请参阅可用性的 Amazon 公告、Elasticsearch5.5 版本公告和 Kibana 5.5 版本公告。

您现在可以在不联系 AWS Support 的情况下还原自动快照,并使用 Elasticsearch _scripts API 存储脚本。

2017 年 9 月7 日

API 版本 2015-01-01162

Page 169: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南

更改 描述 发行日期

Elasticsearch 5.3 支持 Amazon Elasticsearch Service 增加了对 Elasticsearch 版本 5.3的支持。

2017 年 6 月1 日

每个群集可拥有更多实例和 EBS 容量

Amazon Elasticsearch Service 现在支持每个群集最多 100 个节点和 150 TB EBS 容量。

2017 年 4 月5 日

加拿大 (中部) 和欧洲(伦敦) 支持

Amazon Elasticsearch Service 增加了对下列区域的支持:加拿大 (中部) ca-central-1 和欧洲 (伦敦) eu-west-2。

2017 年 3 月20 日

更多实例和更大的EBS 卷

Amazon Elasticsearch Service 增加了对更多实例和更大 EBS 卷的支持。

2017 年 2 月21 日

Elasticsearch 5.1 支持 Amazon Elasticsearch Service 添加了对 Elasticsearch 版本 5.1的支持。

2017 年 1 月30 日

支持拼音分析插件 Amazon Elasticsearch Service 现在内置集成拼音分析插件,可以对数据运行“声音”查询。

2016 年 12 月22 日

美国东部 (俄亥俄) 支持

Amazon Elasticsearch Service 增加了对以下区域的支持:美国东部 (俄亥俄) us-east-2。有关 Amazon ElasticsearchService 支持的区域列表,请参阅 AWS General Reference 中的AWS 区域和终端节点。

2016 年 10 月17 日

新的性能指标 Amazon Elasticsearch Service 增加了 ClusterUsedSpace 性能指标。

2016 年 7 月29 日

Elasticsearch 2.3 支持 Amazon Elasticsearch Service 增加了对 Elasticsearch 版本 2.3的支持。

2016 年 7 月27 日

亚太地区 (孟买) 支持 Amazon Elasticsearch Service 增加了对以下区域的支持:亚太地区 (孟买) ap-south-1。有关 Amazon Elasticsearch Service支持的区域列表,请参阅 AWS General Reference 中的 AWS区域和终端节点。

2016 年 6 月27 日

每个群集更多实例 Amazon Elasticsearch Service 将每个群集的最大实例数 (实例数量) 从 10 增加到 20。

2016 年 18 月5 日

亚太地区 (首尔) 支持 Amazon Elasticsearch Service 增加了对以下区域的支持:亚太地区 (首尔) ap-northeast-2。有关 Amazon ElasticsearchService 支持的区域列表,请参阅 AWS General Reference 中的AWS 区域和终端节点。

2016 年 1 月28 日

Amazon ElasticsearchService

首次发布。 2015 年 10 月1 日

API 版本 2015-01-01163

Page 170: 开发人员指南 API Version 2015-01-01 - AWS Documentationdocs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developer... · 由于内存不足而阻止磁盘 ... JVM 内存不足错误

Amazon Elasticsearch Service 开发人员指南

AWS 词汇表有关最新 AWS 术语,请参阅 AWS General Reference 中的 AWS 词汇表。

API 版本 2015-01-01164