如何为数值创建索引
您可以使用 Atlas Search number
类型为具有int32
、 int64
和double
数据类型数值的字段建立索引。您可以使用 equals 、 range和near操作符来查询number
类型的索引字段。
注意
要查询数组中的数值,只能使用 range 操作符。
Atlas Search 不会自动为分面数值编制索引。相反,必须使用 numberFacet 对这些数值编制索引,才能对数值字段运行分面查询。
Atlas Search 自动为7 月2023之后创建的索引中的所有数字字段编制索引,用于对 Atlas Search 结果进行排序。对于先前存在的索引,必须重建索引才能使用索引中的数字字段进行排序。要了解更多信息,请参阅更新现有索引并对Atlas Search 结果进行排序。
如果您启用动态映射,Atlas Search 会自动为 number
类型的字段创建索引。您可以使用 Atlas UI 中的可视化编辑器或 JSON 编辑器为字段编制 number
类型的索引。
为 类型定义索引number
单击 Refine Your Index配置索引。
在 Field Mappings 部分中,单击 Add Field Mapping 打开 Add Field Mapping 窗口。
从 Field Name 下拉菜单中选择要索引的字段。
注意
您无法对字段名称开头包含美元 (
$
) 符号的字段创建索引。单击 Data Type(添加数据)下拉列表并选择 Number(插入文档)。
配置
number
类型的字段属性。要了解详情,请参阅字段属性。单击 Add(连接)。
以下是number
类型的 JSON语法。将默认索引定义替换为以下内容。要了解有关字段的更多信息,请参阅字段属性。
{ "mappings": { "dynamic": true|false, "fields": { "<field-name>": { "type": "number", "representation": "int64|double", "indexIntegers": true|false, "indexDoubles": true|false } } } }
配置number
字段属性
Atlas Search number
类型采用以下参数:
用户界面字段名称 | JSON 选项 | 类型 | 必要性 | 说明 | 默认 |
---|---|---|---|---|---|
Data Type | type | 字符串 | 必需 | 标识此字段类型的人类可读标签。值必须是 number 。 | |
Representation | representation | 字符串 | Optional | 要编制索引的字段的数据类型。值为:
要了解更多信息,请参阅下面的示例。 | double |
Index Integers | indexIntegers | 布尔 | Optional | 指示是否对 int32 和 int64 类型值编制索引或省略索引编制的标记。值可以是 true 或 false 。无论此类型值还是 indexDoubles 都必须为 true 。如要了解更多信息,请参阅下方的示例。 | true |
Index Doubles | indexDoubles | 布尔 | Optional | true |
number
类型尝试示例
以下索引定义示例在样本数据中使用了多个集合。如果集群上已加载示例数据,则可以使用可视化编辑器和JSON编辑器来配置这些索引。选择首选配置方法后,选择数据库和集合,并优化索引以添加字段映射。
示例数据集中 sample_analytics.accounts
集合的以下索引定义使用 64 位整数值对 account_id
字段进行索引。以下示例还:
对
account_id
字段中的所有其他整数值进行索引。对任何十进制值进行四舍五入,并对
account_id
字段中的小双精度类型值进行索引。
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 account_id。
单击 Data Type(添加数据)下拉列表并选择 Number(插入文档)。
修改 Number Properties 以设置以下内容:
Representation 到
int64
。Index Integers 到
true
。Index Doubles 到
true
。
单击 Add(连接)。
将默认索引定义替换为以下索引定义。
{ "mappings": { "dynamic": false, "fields": { "account_id": { "type": "number", "representation": "int64" } } } }
样本数据集中sample_analytics.accounts
集合的以下索引定义对整数值进行索引,并省略account_id
中的双精度值。
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 account_id。
单击 Data Type(添加数据)下拉列表并选择 Number(插入文档)。
修改 Number Properties 以设置以下内容:
Representation 到
int64
。Index Integers 到
true
。Index Doubles 到
false
。
单击 Add(连接)。
将默认索引定义替换为以下索引定义。
{ "mappings": { "dynamic": false, "fields": { "account_id": { "type": "number", "representation": "int64", "indexDoubles": false } } } }
样本数据集中sample_airbnb.listingsAndReviews
集合的以下索引定义为double
类型值编制索引,并省略bathrooms
字段中的32位和64位整数值。
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 bathrooms。
单击 Data Type(添加数据)下拉列表并选择 Number(插入文档)。
修改 Number Properties 以设置以下内容:
Representation 到
doubles
。Index Integers 到
false
。Index Doubles 到
true
。
单击 Add(连接)。
将默认索引定义替换为以下索引定义。
{ "mappings": { "dynamic": false, "fields": { "bathrooms": { "type": "number", "indexIntegers": false } } } }