如何索引数组元素
对于索引数组,Atlas Search 仅需要数组元素的数据类型。您不必在索引定义中指定数据包含在数组 ( []
) 中。
如果启用动态映射,Atlas Search 会自动为数组内可动态索引数据类型的元素编制索引。要进一步了解 Atlas Search 动态索引的数据类型,请参阅 数据类型 。
您可以使用 Atlas 用户界面中的可视化编辑器或JSON 编辑器来定义数组中元素的索引。
Atlas Search 如何索引数组元素?
Atlas Search 通过在索引期间展平字段来对数组内支持的数据类型进行索引。
例子
请考虑以下文档:
doc1 = { a: {b: [[<value1>, <value2>], <value3>] }} doc2 = { a: {b: [<value1>, <value2>, <value3>] } } doc3 = { a: [{ b: <value1>}, {b: <value2>}, {b: <value3>}] }
Atlas Search 在索引期间将上面的数组展平,类似如下所示:
LuceneDoc<n> = {"a.b":[<value1>,<value2>,<value3>]}
如何为数组中的对象建立索引?
要查询文档或对象数组中的字段,您必须使用 embeddedDocuments 类型来对包含对象数组的字段编制索引。
查看限制
对于以下 Atlas Search 字段类型,如果其包含在数组中,或位于文档中,而该文档包含在数组中,则 Atlas Search 不会为这些字段类型编制索引:
定义数组元素的索引
要定义数组元素的索引,请在 Atlas 用户界面中选择您偏好的配置方法,然后选择数据库和集合。
单击 Refine Your Index 配置索引。
在 Field Mappings 部分中,单击 Add Field Mapping 打开 Add Field Mapping 窗口。
单击 Customized Configuration(连接)。
从Field Name下拉列表中选择要索引的数组类型字段。
单击Data Type下拉列表,选择要建立索引的数组元素的数据类型。 要了解有关配置所选类型属性的更多信息,请参阅所选类型的文档。
单击 Add(连接)。
以下是用于索引数组内元素的 JSON语法。将默认索引定义替换为以下内容。
1 { 2 "mappings": { 3 "dynamic": true|false, 4 "fields": { 5 "<array-field-name>": { 6 "type": "<array-element-data-type>" 7 } 8 } 9 } 10 }
对数组元素进行索引尝试示例
以下索引定义示例使用 sample_mflix.movies 集合。如果您的集群上已加载示例数据,则可以使用 Atlas 用户界面中的可视化编辑器或 JSON 编辑器来配置索引。选择首选配置方法后,选择数据库和集合并优化索引以添加字段映射。
以下索引定义对包含string值数组的 genres
字段进行索引。
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 genres。
单击 Data Type(添加数据)下拉列表并选择 String(插入文档)。
保留String Properties的默认设置。
单击 Add(连接)。
将默认索引定义替换为以下索引定义。
1 { 2 "mappings": { 3 "fields": { 4 "genres": { 5 "type": "string" 6 } 7 } 8 } 9 }