如何为分面搜索编制日期字段索引
您可以使用 Atlas Search dateFacet
类型为分面的日期值编制索引。
Atlas Search 仅支持针对索引为 dateFacet
类型的字段的分面查询。要在同一字段上执行普通搜索,必须将该字段也索引为日期类型。
要对嵌入式文档中的 string 字段进行分面,您必须将父字段作为文档类型进行索引。当您在嵌入式文档中对字符串字段进行分面时,Atlas Search 只返回与父文档数量匹配的分面计数。
Atlas Search 不会为分面而动态地索引日期值。您必须使用静态映射来为分面索引日期值。您可以使用 Atlas UI 中的可视化编辑器或JSON 编辑器将日期字段索引为 number
类型。
dateFacet
类型限制
适用以下限制:
如果日期字段位于数组内部或位于数组中的文档内部,则无法为其创建分面索引。
Atlas Search 不支持对作为
embeddedDocuments
字段一部分进行索引的字段进行日期分面。注意
要为此功能投票并提供反馈,请参阅这篇 MongoDB 反馈文章。
为 dateFacet
类型定义索引
要定义 dateFacet
类型的索引,请在 Atlas UI 中选择您的首选配置方法,然后选择数据库和集合。
单击 Refine Your Index 配置索引。
在 Field Mappings 部分中,单击 Add Field Mapping 打开 Add Field Mapping 窗口。
单击 Customized Configuration(连接)。
从 Field Name 下拉菜单中选择要索引的字段。
注意
您无法对字段名称开头包含美元 (
$
) 符号的字段创建索引。单击Data Type下拉列表并选择DateFacet 。 要了解有关此类型的更多信息,请参阅字段属性。
单击 Add(连接)。
以下是 dateFacet
类型的 JSON 语法。将默认索引定义替换为以下内容。要了解有关字段的更多信息,请参阅字段属性。
{ "mappings": { "dynamic": true|false, "fields": { "<field-name>": { "type": "dateFacet" } } } }
配置 dateFacet
字段属性
Atlas Search dateFacet
类型采用以下参数:
用户界面字段名称 | JSON Option | 类型 | 必要性 | 说明 |
---|---|---|---|---|
Data Type |
| 字符串 | 必需 | 标识此字段类型的人类可读标签。值必须是 |
dateFacet
类型尝试示例
以下索引定义示例使用 sample_mflix.movies 集合。如果您的集群上已加载示例数据,则可以使用 Atlas 用户界面中的可视化编辑器或 JSON 编辑器来配置索引。选择首选配置方法后,选择数据库和集合并优化索引以添加字段映射。
以下示例索引定义将 released
字段作为 Atlas Search dateFacet
类型进行索引,以支持使用 Atlas Search 分面对该字段进行查询。
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 released。
单击 Data Type(添加数据)下拉列表并选择 DateFacet(插入文档)。
单击 Add(连接)。
将默认索引定义替换为以下索引定义。
{ "mappings": { "dynamic": false, "fields": { "released": { "type": "dateFacet" } } } }
以下示例索引定义将 released
字段索引为 dateFacet
和 date
类型,以返回以下类型的查询结果:
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 released。
单击 Data Type(添加数据)下拉列表并选择 DateFacet(插入文档)。
单击 Add(连接)。
重复步骤 1,并从 Data Type 下拉列表中选择 Date。
单击 Add(连接)。
将默认索引定义替换为以下索引定义。
{ "mappings": { "dynamic": false, "fields": { "released": [ { "type": "dateFacet" }, { "type": "date" } ] } } }
了解详情
要学习;了解有关 facet
收集器的详情并查看示例查询,请参阅示例。
要学习;了解如何使用分面(Facet)定义创建索引并使用 facet
收集器查询该索引,请参阅如何在Atlas Search中使用分面教程。