如何为分面搜索的数值编制索引
您可以使用 Atlas Search numberFacet
类型,通过指定用于分面(Facet)的representation
来为数值编制索引。您可以索引 BSON类型int32
、 int64
和double
的编号。
Atlas Search 仅支持对索引为numberFacet
类型的字段进行分面查询。要对同一字段也执行普通搜索,您也必须按类型number
对该字段进行索引。
要对嵌入式文档中的字符串字段进行分面,您必须将父字段作为文档类型进行索引。当您对嵌入式文档内的字符串字段进行分面时,Atlas Search 仅返回匹配父文档数量的分面计数。
Atlas Search 不会为分面(Facet)动态索引number
值。您必须使用静态映射为分面(Facet)的number
值建立索引。您可以使用 Atlas 用户界面中的可视化编辑器或JSON 编辑器将日期字段索引为numberFacet
类型。
numberFacet
查看 限制
适用以下限制:
您无法为
decimal128
进行分面(Facet)索引。您无法为数组或数组中包含的文档中的数值进行分面(Facet)索引。
您无法对作为
embeddedDocuments
字段一部分进行索引的数字字段进行分面(Facet)。
为 类型定义索引numberFacet
要定义 numberFacet
类型的索引,请在 Atlas UI 中选择您的首选配置方法,然后选择数据库和集合。
单击 Refine Your Index配置索引。
在 Field Mappings 部分中,单击 Add Field Mapping 打开 Add Field Mapping 窗口。
从 Field Name 下拉菜单中选择要索引的字段。
注意
您无法对字段名称开头包含美元 (
$
) 符号的字段创建索引。单击 Data Type(添加数据)下拉列表并选择 NumberFacet(插入文档)。
配置
numberFacet
类型的字段属性。要了解详情,请参阅字段属性。单击 Add(连接)。
以下是 numberFacet
类型的 JSON 语法。将默认索引定义替换为以下内容。要了解有关字段的更多信息,请参阅字段属性。
{ "mappings": { "dynamic": true|false, "fields": { "<field-name>": { "type": "numberFacet", "representation": "int64|double", "indexIntegers": true|false, "indexDoubles": true|false } } } }
配置numberFacet
字段属性
Atlas Search numberFacet
类型采用以下参数:
选项 | 类型 | 必要性 | 说明 | 默认 |
---|---|---|---|---|
type | 字符串 | 必需 | 字段的类型。值必须是 numberFacet 。 | |
representation | 字符串 | Optional | 要索引的字段的数据类型。值可以是以下BSON类型之一:
要了解更多信息,请参阅下面的示例。 | double |
indexIntegers | 布尔 | Optional | 指示是对 int32 和int64 类型值编制索引还是省略索引编制。 值可以是true 或false 。 此值或indexDoubles 必须为true 。 | true |
indexDoubles | 布尔 | Optional | 指示是否对 double 类型值编制索引或省略索引编制。 值可以是true 或false 。 此值或indexIntegers 必须为true 。 | true |
numberFacet
类型尝试示例
以下索引定义示例使用 sample_mflix.movies 集合。如果您的集群上已加载示例数据,则可以使用 Atlas 用户界面中的可视化编辑器或 JSON 编辑器来配置索引。选择首选配置方法后,选择数据库和集合并优化索引以添加字段映射。
以下示例索引定义将year
字段索引为 Atlas Search numberFacet
类型,以支持使用 Atlas Search 分面(Facet)。对该字段进行查询
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 year。
单击 Data Type(添加数据)下拉列表并选择 NumberFacet(插入文档)。
接受NumberFacet Properties的默认值。
单击 Add(连接)。
将默认索引定义替换为以下索引定义。
{ "mappings": { "dynamic": false, "fields": { "year": { "type": "numberFacet" } } } }
以下示例索引定义将year
字段索引为numberFacet
和number
类型,以返回以下类型的查询结果:
使用 Atlas Search 组件进行查询的元数据结果。
使用 Atlas Search 操作符(例如near 、 equals和range )进行查询的搜索结果。
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 year。
单击 Data Type(添加数据)下拉列表并选择 NumberFacet(插入文档)。
接受NumberFacet Properties的默认值。
单击 Add(连接)。
重复步骤1 ,然后从Data Type下拉列表中选择Number 。
接受Number Properties的默认值。
单击 Add(连接)。
将默认索引定义替换为以下索引定义。
{ "mappings": { "dynamic": false, "fields": { "year": [ { "type": "numberFacet" }, { "type": "number" } ] } } }