Docs Menu
Docs Home
/
Atlas
/ /

Index Reference

An MongoDB Search index is a data structure that maps documents from your cluster to the terms that are extracted from those documents. MongoDB Search indexes enable efficient full-text searches of your database.

When you define an MongoDB Search index, you can use static or dynamic mappings to specify which fields or field types you want to index in your collection. You can also use analyzers to define how MongoDB Search extracts searchable tokens from string fields or query strings. Finally, you can apply additional configuration options in your index definition to improve the performance and accuracy of your MongoDB Search query, including options to store source fields in your index, or define synonym mappings.

To learn how to define a MongoDB Search index according to your query requirements, see Manage MongoDB Search Indexes. Once you define your MongoDB Search index, you can add the index to your cluster with the Create an MongoDB Search Index tutorial. To learn how to view, edit, update, or delete your MongoDB Search index, see Supported Clients.

This page describes the JSON syntax and definition options for a MongoDB Search index.

1{
2 "mappings": {
3 "dynamic": <boolean> | { <field-types-definition> } ,
4 "fields": { <field-definition> }
5 }
6}
7
1{
2 "analyzer": "<analyzer-for-index>",
3 "searchAnalyzer": "<analyzer-for-query>",
4 "mappings": {
5 "dynamic": <boolean> | {
6 "typeSet": "<typeSet-name>"
7 } ,
8 "fields": {
9 <field-definition>
10 }
11 },
12 "numPartitions": <integer>,
13 "analyzers": [ <custom-analyzer> ],
14 "storedSource": <boolean> | {
15 <stored-source-definition>
16 },
17 "synonyms": [
18 {
19 <synonym-mapping-definition>
20 }
21 ],
22 "typeSets": [
23 {
24 "types": [
25 {<field-types-definition>}
26 ]
27 }
28 ]
29}
Field
Type
Necessity
Description

analyzer

String

Optional

Specifies the analyzer to apply to string fields when indexing.

If you set this only at the top and do not specify an analyzer for the fields in the index definition, MongoDB Search applies this analyzer to all the fields. To use a different analyzer for each field, you must specify a different analyzer for the field.

If omitted, defaults to Standard Analyzer.

analyzers

Optional

Specifies the Custom Analyzers to use in this index.

mappings

Required

Specifies how to index fields at different paths for this index.

mappings.dynamic

Boolean or Object

Optional

Enables dynamic mapping of field types or configures fields individually for this index.

Value must be one of the following:

  • boolean - set to true to recursively index all indexable field types or set to false to not dynamically index any of the indexable field types.

  • object - specify the typeSet to use for recursively indexing all indexable field types. To learn more, see mappings.dynamic.typeSet.

If omitted, defaults to false. If set to false, you must define the individual fields to statically index using mappings.fields.

You can also configure fields individually to override default settings using mappings.fields. Settings for fields in mappings.fields override default settings.

IMPORTANT: MongoDB Search automatically indexes all dynamically indexable field types in a document. MongoDB Search also recursively indexes all nested documents under the document, unless you explicitly override by setting dynamic to false. You can also configure dynamic indexing to only index specified field types using typeSets.

To learn about the field types that you can enable for dynamic mappings, see MongoDB Search Field Types.

For example index configurations, see Examples

mappings.dynamic.typeset

Object

Optional

References the name of the typeSets object that contains the list of field types to automatically and recursively index.

Mutually exclusive with mappings.dynamic boolean flag.

mappings.fields

document

Conditional

Specifies the fields that you want to index. Required only if dynamic mapping is false.

You can't index fields that contain the dollar ($) sign at the start of the field name.

To learn more, see Define Field Mappings.

searchAnalyzer

string

Optional

Specifies the analyzer to apply to query text before searching with it.

If omitted, defaults to the analyzer that you specify for the analyzer option. If you omit both the searchAnalyzer and the analyzer options, defaults to the Standard Analyzer.

numPartitions

int

Optional

Specifies the number of sub-indexes to create if the document count exceeds two billion. The following values are valid: 1, 2, 4. If omitted, defaults to 1.

To use index partitions, you must have search nodes deployed in your cluster.

storedSource

Optional

Specifies fields in the documents to store for query-time look-ups using the returnedStoredSource option. You can store fields of all MongoDB Search Field Types on MongoDB Search. Value can be one of the following:

  • true, to store all fields

  • false, to not store any fields

  • Object that specifies the fields to include or exclude from storage

storedSource is only available on clusters running one of the following versions:

  • MongoDB 7.0+

If omitted, defaults to false.

To learn more, see Define Stored Source Fields in Your MongoDB Search Index.

synonyms

Optional

Specifies the synonym mappings to use in your index.

An index definition can have only one synonym mapping.

To learn more, see Define Synonym Mappings in Your MongoDB Search Index.

typeSets

Array of objects

Optional

Specifies the typeSets to use in this index for dynamic mappings.

typeSets.[n].name

String

Required

Specifies the name of the typeSet configuration.

typeSets.[n].types

Array of objects

Required

Specifies the field types, one per object, to index automatically using dynamic mappings.

typeSets.[n].types.[n].type

String

Required

Specifies the field type to automatically index. To learn more about the field types that you can configure for dynamic mapping, see Configure a typeSet.

The following error is returned if you run $search queries when the MongoDB Search mongot process isn't installed or running:

MongoError: Remote error from mongot :: caused by :: Error connecting to localhost:28000.

The mongot process is installed only when the first MongoDB Search index is defined. If you don't have any MongoDB Search index in your cluster, create at least one MongoDB Search index to resolve this error.

To learn how to define an MongoDB Search index to meet your MongoDB Search query needs, see Manage MongoDB Search Indexes.

To learn how to add an index to your cluster, see Create an MongoDB Search Index.

To learn more about the available index configuration options, see the following reference pages:

Back

Manage Indexes

On this page