Atlas Search 可以通过不同的方式对数据进行索引。在定义 Atlas Search 索引时,您可以指定一个特定分析器或多个分析器以对某些字段进行索引。要了解更多信息,请参阅使用分析器处理数据。您还可以对某些字段进行索引并忽略其他字段,或者可以动态对集合中的所有字段进行索引。要了解更多信息,请参阅 定义字段映射。您可以通过 Atlas UI、Atlas Search API、Atlas CLI、mongosh
或 驱动程序 定义 Atlas Search 索引。
本页介绍了 Atlas Search 索引的 JSON 语法和字段。
重要
如果您使用 $out 聚合阶段修改具有 Atlas Search 索引的集合,则必须删除并重新创建搜索索引。如果可能,请考虑使用 $merge 而不是 $out
。
1 | { |
2 | "mappings": { |
3 | "dynamic": <boolean>, |
4 | "fields": { <field-definition> } |
5 | } |
6 | } |
7 | |
1 | { |
2 | "analyzer": "<analyzer-for-index>", |
3 | "searchAnalyzer": "<analyzer-for-query>", |
4 | "mappings": { |
5 | "dynamic": <boolean>, |
6 | "fields": { <field-definition> } |
7 | }, |
8 | "numPartitions": 4, |
9 | "analyzers": [ <custom-analyzer> ], |
10 | "storedSource": <boolean> | { |
11 | <stored-source-definition> |
12 | }, |
13 | "synonyms": [ |
14 | { |
15 | "name": "<synonym-mapping-name>", |
16 | "source": { |
17 | "collection": "<source-collection-name>" |
18 | }, |
19 | "analyzer": "<synonym-mapping-analyzer>" |
20 | } |
21 | ] |
22 | } |
23 | |
字段 | 类型 | 必要性 | 说明 |
---|
| | | 指定在建立索引时应用于字符串字段的分析器。 如果您仅在顶部设置此项,并且没有为索引定义中的字段指定分析器,则 Atlas Search 会将此分析器应用于所有字段。若要为每个字段使用不同的分析器,必须为该字段指定不同的分析器。 如果省略,则默认为标准分析器。 |
| | | |
| | | |
| | | 为该索引的字段启用或禁用动态映射。 如果设置为 true ,Atlas Search 将递归索引所有动态可索引字段。 如果设置为 false ,您必须使用 mappings.fields 指定要进行索引的各个字段。 如果省略,则默认值为 false 。 重要提示:Atlas Search 使用检测到的数据类型的默认设置动态对 document 中的所有字段进行索引。Atlas Search 还会动态对 document 中嵌套的所有文档进行索引,除非您将 dynamic 设置为 false 以明确覆盖该行为。 有关索引配置示例,请参阅静态映射示例或组合映射示例。 |
| | | 指定要编制索引的字段。仅在禁用了动态映射时才是必需的。 您无法对字段名称开头包含美元 ($ ) 符号的字段创建索引。 要了解更多信息,请参阅定义字段映射。 |
| | | 指定在使用查询文本进行搜索之前为其应用的分析器。 如果省略,则默认为您为 analyzer 选项指定的分析器。如果同时省略 searchAnalyzer 和 analyzer 选项,则默认为标准分析器。 |
| | | 指定文档计数超过 20 亿时要创建的子索引数量。以下值是有效的:1 、 2 、 4 、 8 、 16 、 32 、 64 。如果省略,则默认为 1 。 要使用索引分区,您必须在集群中部署搜索节点。 重要numPartitions 选项是作为“预览”功能的。
|
| | | |
| | | |