

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Elasticsearch


Elasticsearch (`elasticsearch`) 操作将来自 MQTT 消息的数据写入亚马逊 OpenSearch 服务域。然后，您可以使用 OpenSearch 仪表板等工具在 Ser OpenSearch vice 中查询和可视化数据。

**警告**  
`Elasticsearch` 操作只能由现有规则操作使用。要创建新的规则操作或更新现有规则操作，请使用 `OpenSearch` 规则而不是操作。有关更多信息，请参阅 [OpenSearch](opensearch-rule-action.md)。

## 要求


此规则操作具有以下要求：
+  Amazon IoT 可以代入执行`es:ESHttpPut`操作的 IAM 角色。有关更多信息，请参阅 [授予 Amazon IoT 规则所需的访问权限](iot-create-role.md)。

  在 Amazon IoT 控制台中，您可以选择或创建 Amazon IoT 允许执行此规则操作的角色。
+ 如果您使用客户托管 Amazon KMS key （KMS 密钥）加密中的静态数据 OpenSearch，则该服务必须有权代表呼叫者使用 KMS 密钥。有关更多信息，请参阅[《亚马逊服务*开发者指南》*中的亚马逊 OpenSearch 服务静态数据加密](https://docs.amazonaws.cn/opensearch-service/latest/developerguide/encryption-at-rest.html)。 OpenSearch 

## 参数


使用此操作创建 Amazon IoT 规则时，必须指定以下信息：

`endpoint`  
您的服务域端点。  
仅支持[替换模板](iot-substitution-templates.md)：API 且 Amazon CLI 仅支持

`index`  
您要在其中存储数据的索引。  
支持[替换模板](iot-substitution-templates.md)：是

`type`  
您存储的文档类型。  
支持[替换模板](iot-substitution-templates.md)：是

`id`  
每个文档的唯一标识符。  
支持[替换模板](iot-substitution-templates.md)：是

`roleARN`  
允许访问 OpenSearch 服务域的 IAM 角色。有关更多信息，请参阅 [要求](#elasticsearch-rule-action-requirements)。  
支持[替换模板](iot-substitution-templates.md)：否

## 示例


以下 JSON 示例定义了 Amazon IoT 规则中的 Elasticsearch 操作以及如何为该`elasticsearch`操作指定字段。有关更多信息，请参阅 [ElasticsearchAction](https://docs.amazonaws.cn/iot/latest/apireference/API_ElasticsearchAction.html)。

```
{
    "topicRulePayload": {
        "sql": "SELECT *, timestamp() as timestamp FROM 'iot/test'",
        "ruleDisabled": false,
        "awsIotSqlVersion": "2016-03-23",
        "actions": [
            {
                "elasticsearch": {
                    "endpoint": "https://my-endpoint",
                    "index": "my-index",
                    "type": "my-type",
                    "id": "${newuuid()}",
                    "roleArn": "arn:aws:iam::123456789012:role/aws_iot_es"
                }
            }
        ]
    }
}
```

以下 JSON 示例定义了一个在规则中使用替换模板的 Elasticsearch 操作。 Amazon IoT 

```
{
    "topicRulePayload": {
        "sql": "SELECT * FROM 'some/topic'",
        "ruleDisabled": false,
        "awsIotSqlVersion": "2016-03-23",
        "actions": [
            {
                "elasticsearch": {
                    "endpoint": "https://my-endpoint",
                    "index": "${topic()}",
                    "type": "${type}",
                    "id": "${newuuid()}",
                    "roleArn": "arn:aws:iam::123456789012:role/aws_iot_es"
                }
            }
        ]
    }
}
```

## 另请参阅

+ [OpenSearch](opensearch-rule-action.md)
+ [什么是亚马逊 OpenSearch 服务？](https://docs.amazonaws.cn/opensearch-service/latest/developerguide/)