Docs 菜单
Docs 主页
/ /

定义字段映射

创建MongoDB Search索引时,可以使用以下方法指定要索引的字段:

  • 动态映射:启用MongoDB SearchtypeSet 以根据默认或配置的字段类型设立() 自动为所有字段索引。

  • 静态映射:允许您指定要索引的字段。

默认下, MongoDB Search 停止复制副本集或单个分片上超过 2.1 十亿个索引对象的索引更改,其中每个已建立索引的文档或嵌套 embeddedDocument 都算作单个对象。这意味着您的索引仍然可查询,但可能会得到过时的结果。

如果计划索引可能超过2.1 十亿个对象的字段,其中索引对象是顶层文档或嵌入式文档,请使用 numPartitions索引选项对索引进行分区(仅在搜索节点部署中支持)或对集群分片。

您无法对字段名称开头包含美元 ($) 符号的字段创建索引。

以下语法演示了如何启用MongoDB Search 使用动态和静态映射对字段进行索引。要学习;了解有关动态和静态映射的更多信息,请参阅 动态和静态映射。

1{
2 "mappings": {
3 "dynamic": true|false | {
4 "typeSet": "<typeset-name>"
5 },
6 "fields": {
7 "<field-name>": {
8 "type": "<field-type>",
9 ...
10 },
11 ...
12 }
13 },
14 "typeSets": [
15 {
16 "name": "<typeset-name>",
17 "types": [
18 {
19 "type": "<field-type>",
20 ...
21 },
22 ...
23 ]
24 },
25 ...
26 ]
27}

您可以通过以下方式配置MongoDB Search:

  • 动态映射,用于根据默认或配置的类型设立(typeSet) 自动为字段索引

  • 仅索引指定字段的静态映射

您还可以将动态映射与静态映射结合使用。静态映射会覆盖动态映射配置。

MongoDB Search 动态映射允许您将MongoDB Search 配置为自动递归地索引数据中的字段。可以根据默认类型设立或通过配置 typeSet 对字段进行索引。

您可以启用或配置动态映射:

  • 在根 mappings 级别应用整个文档。

  • [推荐]document 字段中键入要应用指定对象的字段。

  • [推荐]embeddedDocuments 字段类型中,要应用需要逐元素查询比较的指定对象大量(类似于$elemMatch )。

注意

最佳实践

动态映射可能会导致对大量唯一字段索引,从而占用更多磁盘空间并且可能降低性能。仅当需要对定期更改或未知的字段索引,才使用动态映射。始终在文档中而不是在父文档级别使用动态映射。

当您使用动态映射对数据索引时:

  • MongoDB Search 还会对数据中 document对象中的 typeSet 支持的所有嵌套字段进行动态索引。

  • 如果字段包含多态数据, MongoDB Search 会自动将该字段索引为索引中使用的 typeSet 支持的所有类型。如果字段包含 typeSet 不支持类型的数据, MongoDB Search 将不会索引该数据。

typeSetdynamic 设立为true 时, MongoDB搜索使用默认的 。在默认的typeSet 中, MongoDB Search 将 BSON 类型作为MongoDB Search字段类型进行索引。下表显示了当您使用默认 时, MongoDB搜索自动索引为MongoDB搜索字段类型的typeSet BSON 类型。当以下BSON 类型包含在数组和对象中时, MongoDB搜索还会自动对其进行索引。

BSON类型
MongoDB搜索字段类型

布尔

Date

双精度浮点数、32 位整数、64 位整数

ObjectId

字符串

UUID

null

以下是为动态映射启用默认类型设立的语法:

1{
2 "mappings": {
3 "dynamic": true | {
4 "typeSet": "<typset-name>"
5 },
6 "typeSets": [
7 {
8 "name": "<typset-name>",
9 "types": [
10 {
11 "type": "<field-type>"
12 },
13 ...
14 ]
15 },
16 ...
17 ]
18 }
19}

有关索引使用默认typeSet 对所有字段索引示例,请参阅动态映射示例。

重要

通过配置 指定要动态索引的MongoDB搜索字段类型。您可以将任何BSON类型配置为作为任何MongoDB搜索字段类型自动编制索引,但typeSet documentembeddedDocuments、 或已弃用的字段类型除外。

typeSet 采用以下语法:

1{
2 "mappings": {
3 "dynamic": {
4 "typeSet": "<typeset-name>"
5 },
6 "fields": {
7 "<field-name>": {
8 "type": "<field-type>",
9 ...
10 },
11 ...
12 }
13 },
14 "typeSets": [
15 {
16 "name": "<typeset-name>",
17 "types": [
18 {
19 "type": "<field-type>"
20 },
21 ...
22 ]
23 },
24 ...
25 ]
26}

在配置 typeSet 之前,请考虑以下事项:

  • 不能在同一 typeSet对象中多次定义相同的字段类型。您只能为每种字段类型配置一个 typeSet 定义。

    示例,您不能在同一 typeSet 定义中为 number 类型定义多个配置。

  • 您可以使用 multi分析器配置动态映射。

您无法从Atlas用户界面Visual Editor 配置 typeSet。请改用Atlas用户界面JSON Editor

typeSet有关演示使用自定义 配置的索引示例,请参阅动态映射示例。

使用静态映射为您不希望动态编制索引选项,或者独立于索引中的其他字段配置单个字段。使用静态映射时, MongoDB Search 仅对您在mappings.fields 中指定的字段编制索引。您还可以使用静态映射将字段排除在索引之外。

要使用静态映射仅为某些字段配置索引选项,设立为mappings.dynamic false,并为要建立索引的每个字段指定字段名称、数据类型和其他配置选项。您可以按任意顺序指定字段。

如果您忽略 mappings.dynamic 字段,则默认为 false

1{
2 "mappings": {
3 "dynamic": true|false,
4 "fields": {
5 "<field-name>": {
6 "type": "<field-type>",
7 ...
8 },
9 ...
10 }
11 }
12}

要定义嵌套字段的索引,必须为该嵌套字段的每个父字段定义映射。不能使用点表示法对嵌套字段进行静态索引。有关示例,请参阅下面的示例或组合映射示例。

您可以使用静态映射将字段索引为多种类型。要将字段索引为多种类型,请在字段定义大量中为字段定义类型。您可以使用静态映射将任何字段索引为任何支持的类型。要学习;了解更多信息,请参阅MongoDB搜索字段类型。

以下示例显示了将一个字段索引为多种类型的字段定义。

1{
2 "mappings": {
3 "dynamic": true|false | {
4 "typeSet": "<type-set-name>"
5 },
6 "fields": {
7 "<field-name>": [
8 {
9 "type": "<field-type>",
10 ...
11 },
12 {
13 "type": "<field-type>",
14 ...
15 },
16 ...
17 ],
18 ...
19 }
20 }.
21 "typeSets": [
22 {
23 "name": "<typeset-name>",
24 "types": [
25 {
26 "type": "<field-type>"
27 },
28 ...
29 ]
30 },
31 ...
32 ]
33}

有关演示静态映射的其他索引示例,请参阅静态映射示例。

MongoDB Search 不支持以下BSON数据类型:

  • Decimal128

  • 带作用域的 JavaScript 代码

  • Max key

  • Min key

  • 正则表达式

  • 时间戳

MongoDB Search 会自动在 mongot 上存储字符串类型的字段。您可以使用索引定义中的 在MongoDB搜索索引中定义存储的源字段 选项,在MongoDB搜索上存储所有支持 数据类型 的字段。要学习;了解有关 mongot 和MongoDB Search节点架构的更多信息,请参阅MongoDB Search 部署选项。

下表列出了支持的BSON数据类型以及可用于对BSON数据类型索引的MongoDB搜索字段类型。该表还列出了可用于查询字段值的操作符和收集器。

这些操作符不支持字符串大量。

MongoDB Search 不包含用于索引null 值的字段类型,因为MongoDB Search 会自动为静态和动态索引字段的 null 值索引。

已弃用。要学习;了解有关已弃用的分面(Facet)字段类型及其更新对应项的更多信息,请参阅比较分面字段类型。

注意

您可以使用 选项在MongoDB SearchstoredSource 上存储所有支持数据类型的字段。

以下示例使用sample_mflix.movies 集合演示如何配置字段以使用动态和静态映射进行索引。如果加载示例数据,则可以在集合上创建这些索引。要学习;了解如何创建MongoDB Search 索引,请参阅MongoDB Search 快速入门。

以下索引定义示例演示了动态映射。

以下索引定义示例演示了静态映射。

以下索引定义示例将动态映射与静态映射相结合。

后退

词元筛选器

在此页面上