本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
入门教程
本教程演示了如何使用舰队索引来索引您的位置数据。为简单起见,您可以创建一个代表您的设备的事物并将位置数据存储在命名的阴影中,更新位置索引的事物索引配置,并运行示例地理查询来搜索径向边界内的设备。
完成本教程需要大约 15 分钟。
先决条件
-
安装最新版本的AWS CLI。
-
熟悉位置索引和地理查询、管理事物索引和查询语法。
创建事物和阴影
您可以创建一个代表您的设备的事物,以及一个命名的影子来存储其位置数据(坐标 47.61564,-122.33584)。
-
运行以下命令来创建代表你的自行车的东西,名为 Bike-1。有关如何使用创建事物的更多信息 AWS CLI,请参阅通过参考创建事物AWS CLI。
aws iot create-thing --thing-name "Bike-1" \ --attribute-payload '{"attributes": {"model":"OEM-2302-12", "battery":"35", "acqDate":"06/09/23"}}'
此命令的输出可能如下所示:
{ "thingName": "Bike-1", "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/Bike-1", "thingId": "df9cf01d-b0c8-48fe-a2e2-e16cff6b23df" }
-
运行以下命令创建一个命名的阴影来存储 Bike-1 的位置数据(坐标 47.61564,-122.33584)。有关如何使用创建命名阴影的更多信息 AWS CLI,请参阅 “update-thing-shadow参AWS CLI考”。
aws iot-data update-thing-shadow \ --thing-name Bike-1 \ --shadow-name Bike1-shadow \ --cli-binary-format raw-in-base64-out \ --payload '{"state":{"reported":{"coordinates":{"lat": 47.6153, "lon": -122.3333}}}}' \ "output.txt" \
此命令不会生成任何输出。要查看您创建的命名阴影,可以运行 list-named-shadows-for-thing CLI 命令。
aws iot-data list-named-shadows-for-thing --thing-name Bike-1
此命令的输出可能如下所示:
{ "results": [ "Bike1-shadow" ], "timestamp": 1699574309 }
更新事物索引配置
要索引您的位置数据,您必须更新您的事物索引配置以包含位置数据。由于您的位置数据存储在本教程中的命名阴影中,因此thingIndexingMode
请将其设置为REGISTRY
(最低要求),设置为 namedShadowIndexingMode
ON
,然后将您的位置数据添加到配置中。在此示例中,您必须将命名阴影的名称和阴影的位置数据路径添加到filter
。
-
运行命令以更新位置索引的索引配置。
aws iot update-indexing-configuration --cli-input-json '{ "thingIndexingConfiguration": { "thingIndexingMode": "REGISTRY", "thingConnectivityIndexingMode": "OFF", "deviceDefenderIndexingMode": "OFF", "namedShadowIndexingMode": "ON", "filter": { "namedShadowNames": ["Bike1-shadow"], "geoLocations":[{ "name":"shadow.name.Bike1-shadow.reported.coordinates" }] }, "customFields": [ { "name":"attributes.battery", "type":"Number"}] } }'
命令不会生成任何输出。您可能需要稍等片刻,直到更新完成。要检查状态,请运行 desc ribe-index CLI 命令。如果你看到 sh
indexStatus
ows:ACTIVE
,则你的事物索引更新已完成。 -
运行命令以验证您的索引配置。此为可选步骤。
aws iot get-indexing-configuration
输出可能如下所示:
{ "thingIndexingConfiguration": { "thingIndexingMode": "REGISTRY", "thingConnectivityIndexingMode": "OFF", "deviceDefenderIndexingMode": "OFF", "namedShadowIndexingMode": "ON", "managedFields": [ { "name": "shadow.name.*.hasDelta", "type": "Boolean" }, { "name": "registry.version", "type": "Number" }, { "name": "registry.thingTypeName", "type": "String" }, { "name": "registry.thingGroupNames", "type": "String" }, { "name": "shadow.name.*.version", "type": "Number" }, { "name": "thingName", "type": "String" }, { "name": "thingId", "type": "String" } ], "customFields": [ { "name": "attributes.battery", "type": "Number" } ], "filter": { "namedShadowNames": [ "Bike1-shadow" ], "geoLocations": [ { "name": "shadow.name.Bike1-shadow.reported.coordinates", "order": "LatLon" } ] } }, "thingGroupIndexingConfiguration": { "thingGroupIndexingMode": "OFF" } }
运行地理查询
现在,您已经更新了事物索引配置以包含位置数据。尝试创建一些地理查询并运行它们以查看是否可以获得所需的搜索结果。地理查询必须遵循查询语法。您可以在中找到一些有用的示例地理查询。地理查询示例
在以下示例命令中,使用地理查询shadow.name.Bike1-shadow.reported.coordinates:geo_distance,47.6204,-122.3491,15.5km
搜索距离中心点 15.5 千米径向距离范围内的设备,坐标为 47.6204,-122.3491)。
aws iot search-index --query-string "shadow.name.Bike1-shadow.reported.coordinates:geo_distance,47.6204,-122.3491,15.5km"
由于您的设备位于坐标 “lat”:47.6153,“lon”:-122.3333,位于距离中心点 15.5 km 的距离之内,因此您应该能够在输出中看到此设备(Bike-1)。输出可能如下所示:
{ "things": [ { "thingName": "Bike-1", "thingId": "df9cf01d-b0c8-48fe-a2e2-e16cff6b23df", "attributes": { "acqDate": "06/09/23", "battery": "35", "model": "OEM-2302-12" }, "shadow": "{\"reported\":{\"coordinates\":{\"lat\":47.6153,\"lon\":-122.3333}},\"metadata\":{\"reported\":{\"coordinates\":{\"lat\":{\"timestamp\":1699572906},\"lon\":{\"timestamp\":1699572906}}}},\"hasDelta\":false,\"version\":1}" } ] }
有关更多信息,请参阅 索引位置数据。