

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

# 实例集索引疑难解答
<a name="fleet-indexing-troubleshooting"></a>

## 队列索引服务的聚合查询疑难解答
<a name="aggregation-troubleshooting"></a>

如果您遇到类型不匹配错误，则可以使用 CloudWatch Logs 来解决问题。 CloudWatch 在舰队索引服务写入日志之前，必须启用日志。有关更多信息，请参阅 [Amazon IoT 使用 CloudWatch 日志进行监控](cloud-watch-logs.md)。

要在非托管式字段上进行聚合查询，必须指定您在传递给 `UpdateIndexingConfiguration` 或 **update-indexing-configuration** 的 `customFields` 参数中定义的字段。如果字段值与配置的字段数据类型不一致，则在执行聚合查询时忽略此值。

如果由于类型不匹配而无法对字段进行索引，则队列索引服务会向 Logs 发送错误日志。 CloudWatch 错误日志包含字段名称、无法转换的值以及设备的事物名称。下面是一个错误日志示例：

```
{
  "timestamp": "2017-02-20 20:31:22.932",
  "logLevel": "ERROR",
  "traceId": "79738924-1025-3a00-a669-7bec69f7f07a",
  "accountId": "000000000000",
  "status": "SucceededWithIssues",
  "eventType": "IndexingCustomFieldFailed",
  "thingName": "thing0",
  "failedCustomFields": [
    {
      "Name": "attributeName1",
      "Value": "apple",
      "ExpectedType": "String"
    },
    {
      "Name": "attributeName2",
      "Value": "2",
      "ExpectedType": "Boolean"
    }
  ]
}
```

如果设备已断开连接大约一小时，则连接状态 `timestamp` 值可能会缺失。对于持续会话，在客户端断开连接的时间超过为持续会话配置的时间 time-to-live (TTL) 之后，该值可能会丢失。仅为客户端 ID 具有匹配事物名称的连接，对连接状态数据建立索引。（客户端 ID 是用于将设备连接到的值 Amazon IoT Core。）

## 实例集索引配置故障排除
<a name="index-configuration-troubleshooting"></a>

**无法降级实例集索引配置**

当您想要移除与实例集指标或动态组关联的数据来源时，不支持降级实例集索引配置。

例如，如果您的索引配置包含注册表数据、影子数据和连接数据，并且查询 `thingName:TempSensor* AND shadow.desired.temperature>80` 中存在实例集指标，则更新索引配置以仅包含注册表数据将导致错误。

不支持修改现有实例集指标使用的自定义字段。

**由于实例集指标或动态组不兼容，无法更新您的索引配置**

如果由于实例集指标或动态组不兼容而无法更新索引配置，请在更新索引配置之前删除不兼容的实例集指标或动态组。

## 位置索引和地理查询疑难解答
<a name="fleet-index-geoquery-troubleshooting"></a>

要解决位置索引和地理查询中的类型不匹配错误，您可以启用 CloudWatch 日志。有关如何监控 Amazon IoT 使用的更多信息 CloudWatch，请按照[ step-by-step指南进行](https://docs.amazonaws.cn//iot/latest/developerguide/cloud-watch-logs.html)操作。

使用地理查询为位置数据编制索引时，您在 `geoLocations` 中指定的位置字段必须与您传递到 `UpdateIndexingConfiguration` 的位置字段相匹配。如果存在不匹配的情况，队列索引会向发送不匹配的类型错误。 CloudWatch错误日志包含字段名称、无法转换的值以及设备的事物名称。

下面是一个错误日志示例：

```
{
"timestamp": "2023-11-09 01:39:43.466",
    "logLevel": "ERROR",
    "traceId": "79738924-1025-3a00-a669-7bec69f7f07a",
    "accountId": "123456789012",
    "status": "Failure",
    "eventType": "IndexingGeoLocationFieldFailed",
    "thingName": "thing0",
    "failedGeolocationFields": [
        {
"Name": "attributeName1",
            "Value": "apple",
            "ExpectedType": "Geopoint"
        }
    ],
    "reason": "failed to index the field because it could not be converted to one of the expected geoLocation formats."
}
```

有关更多信息，请参阅 [为位置数据编制索引](location-indexing-geoquery.md)。

## 实例集故障排除指标
<a name="fleet-metrics-troubleshooting"></a>

**看不到中的数据点 CloudWatch**

如果您能够创建队列指标，但无法在中看到数据点 CloudWatch，则很可能没有符合查询字符串条件的东西。

请参阅以下示例命令，了解如何创建实例集指标：

```
aws iot create-fleet-metric --metric-name "example_FM" --query-string "thingName:TempSensor* AND attributes.temperature>80" --period 60 --aggregation-field "attributes.temperature" --aggregation-type name=Statistics,values=count
```

如果没有符合查询字符串条件 `--query-string "thingName:TempSensor* AND attributes.temperature>80"` 的事物：
+ 使用`values=count`，您将能够创建舰队指标，并且会有数据点可供显示 CloudWatch。该值 `count` 的数据点始终为0。
+ 使用`values`其他`count`，您将能够创建舰队指标，但不会在中看到舰队指标 CloudWatch ，也不会显示任何数据点 CloudWatch。