如何为 GeoJSON 对象创建索引
您可以使用 Atlas Search geo
类型为地理点和形状坐标编制索引。对于该类型,索引字段必须是 GeoJSON 对象。您可以使用 geoShape 和 geoWithin 操作符查询 geo
类型的索引字段。
Atlas Search 不会动态地对 geo
类型的字段进行索引。您必须 使用静态映射对 geo
字段进行索引。您可以使用 Atlas 用户界面中的可视化编辑器或 JSON 编辑器对 geo
类型的字段进行索引。
为 geo
类型定义索引
要定义 geo
类型的索引,请在 Atlas UI 中选择您的首选配置方法,然后选择数据库和集合。
单击 Refine Your Index 配置索引。
在 Field Mappings 部分中,单击 Add Field Mapping 打开 Add Field Mapping 窗口。
单击 Customized Configuration(连接)。
从 Field Name 下拉菜单中选择要索引的字段。
注意
您无法对字段名称开头包含美元 (
$
) 符号的字段创建索引。单击 Data Type(添加数据)下拉列表并选择 Geo(插入文档)。
配置
geo
类型的字段属性。要了解详情,请参阅字段属性。单击 Add(连接)。
以下是 geo
类型的 JSON 语法。将默认索引定义替换为以下内容。要了解有关字段的更多信息,请参阅字段属性。
{ "mappings": { "dynamic": false, "fields": { "<field-name>": { "indexShapes": true|false, "type": "geo" } } } }
配置 geo
字段属性
Atlas Search geo
类型采用以下参数:
选项 | 类型 | 必要性 | 说明 | 默认 |
---|---|---|---|---|
type | 字符串 | 必需 | 标识该字段类型的人类可读标签。UI 值必须是 Geo 且 JSON 值必须是 geo 。 | |
indexShapes | 布尔 | Optional | 指示是否对形状进行索引的标志。 默认情况下,Atlas Search:
值可以是:
| false |
尝试 geo
类型的示例
以下索引定义示例使用sample_airbnb.listingsAndReviews collection。如果集群上已加载示例数据,则可以使用 Atlas 用户界面中的可视化编辑器或JSON编辑器来配置索引。 选择首选配置方法后,选择数据库和collection,并优化索引以添加字段映射。
以下索引定义将address.location
字段索引为geo
类型,以支持使用 Atlas Search geoShape和geoWithin操作符对该字段进行查询。
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 address.location。
单击 Data Type(添加数据)下拉列表并选择 Geo(插入文档)。
修改Geo Properties ,将Index Shapes的值设置为
true
。单击 Add(连接)。
将默认索引定义替换为以下索引定义。
1 { 2 "mappings": { 3 "fields": { 4 "address": { 5 "type": "document", 6 "fields": { 7 "location": { 8 "indexShapes": true, 9 "type": "geo" 10 } 11 } 12 } 13 } 14 } 15 }