

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

# OpenSearch
<a name="opensearch-rule-action"></a>

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

## 要求
<a name="opensearch-rule-action-requirements"></a>

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

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

## 参数
<a name="opensearch-rule-action-parameters"></a>

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

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

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

`type`  
您存储的文档类型。  
对于高于 1.0 的 OpenSearch 版本，`type`参数的值必须为`_doc`。有关详情，请参阅 [OpenSearch 文档](https://opensearch.org/docs/1.0/opensearch/rest-api/document-apis/index-document/#response-body-fields)。
支持[替换模板](iot-substitution-templates.md)：是

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

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

## 限制
<a name="opensearch-rule-action-limitations"></a>

 OpenSearch (`openSearch`) 操作不能用于向 VPC Elasticsearch 集群传输数据。

## 示例
<a name="opensearch-rule-action-examples"></a>

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

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

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

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

**注意**  
替换的`type`字段适用于 OpenSearch 版本 1.0。对于任何高于 1.0 的版本，`type` 的值必须为 `_doc`。

## 另请参阅
<a name="opensearch-rule-action-see-also"></a>

[什么是亚马逊 OpenSearch 服务？](https://docs.amazonaws.cn/opensearch-service/latest/developerguide/) 在《*亚马逊 OpenSearch 服务开发者指南》*中