Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Índice de Atlas Search

db.collection.updateSearchIndex() (método mongosh)

db.collection.updateSearchIndex()

Novedades en la versión 6.0.7.

Actualiza un índice de Atlas Search existente o un índice de Atlas Vector Search.

Importante

Método mongosh

Esta página documenta un método mongosh. Esta no es la documentación para los comandos de base de datos ni para los drivers específicos de lenguajes, como Nodo.js.

Para el comando de base de datos, consulte el updateSearchIndex dominio.

Para los drivers de API de MongoDB, consulte la documentación del driver de MongoDB específica del lenguaje.

Este método está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

Sintaxis del comando:

db.<collection>.updateSearchIndex(
<name>,
{
<definition>
}
)

updateSearchIndex() toma estos campos:

Campo
Tipo
Necesidad
Descripción

name

string

Requerido

Nombre del índice de búsqueda que se va a actualizar.

definition

Documento

Requerido

Documento que describe el índice a crear. La sintaxis de definition depende de si creas un índice de búsqueda estándar o un índice de Vector Search. Para la sintaxis definition, vea:

La definición del índice de búsqueda requiere los siguientes campos:

{
analyzer: "<analyzer-for-index>",
searchAnalyzer: "<analyzer-for-query>",
mappings: {
dynamic: <boolean>,
fields: { <field-definition> }
},
analyzers: [ <custom-analyzer> ],
storedSource: <boolean> | {
<stored-source-definition>
},
synonyms: [ {
name: "<synonym-mapping-name>",
source: {
collection: "<source-collection-name>"
},
analyzer: "<synonym-mapping-analyzer>"
} ]
}
Campo
Tipo
Necesidad
Descripción

analyzer

string

Opcional

Especifica el analizador a aplicar a los campos de string durante la indexación.

Si omite este campo, el índice utiliza el analizador estándar.

searchAnalyzer

string

Opcional

Especifica el analizador que se debe aplicar al texto de la query antes de buscar en el texto.

Si omite este campo, el índice utiliza el mismo analizador especificado en el campo analyzer.

Si omites tanto los campos searchAnalyzer como analyzer, el índice usa el analizador estándar.

mappings

Objeto

Requerido

Especifica cómo indexar campos en diferentes rutas para este índice.

mappings.dynamic

booleano

Opcional

Habilita o deshabilita el mapeo dinámico de campos para este índice.

Si se configura en true, el índice contiene todos los campos que contienen tipos de datos admitidos.

Si se establece en false, debe especificar los campos individuales para indexar usando mappings.fields.

Si se omite, es por defecto false.

mappings.fields

Documento

Condicional

Requerido solo si el mapeo dinámico está deshabilitado.

Especifica los campos para indexar. Para obtener más información, consulte Definir mapeos de campos.

analyzers

arreglo

Opcional

Especifica los Analizadores personalizados que se deben usar en este índice.

storedSource

Opcional

Especifica los campos del documento que se almacenarán para las consultas realizadas utilizando la opción returnsStoredSource.

Puede almacenar campos de todos los tipos de búsqueda de MongoDB en Atlas Search. El storedSource valor puede ser uno de los siguientes:

  • true, para almacenar todos los campos

  • false, para no almacenar ningún campo

  • Un objeto que especifique los campos a include o exclude desde el almacenamiento

Si se omite, es por defecto false.

Para obtener más información, consulta Definir campos fuente almacenados en tu MongoDB Search.

synonyms

Opcional

Especifica las asignaciones de sinónimos que se deben usar en su índice. La configuración de sinónimos permite indexar y buscar palabras que tengan el mismo o similar significado.

Para obtener más información, consulte Definir asignaciones de sinónimos en su índice de búsqueda de MongoDB.

La definición del índice de búsqueda vectorial toma los siguientes campos:

{
"fields": [
{
"type": "vector" | "filter",
"path": "<field-to-index>",
"numDimensions": <number-of-dimensions>,
"similarity": "euclidean" | "cosine" | "dotProduct"
}
]
}

Para obtener explicaciones sobre los campos de definición del índice de búsqueda vectorial, consulta Cómo indexar campos para búsquedas vectoriales.

updateSearchIndex() activa una creación de índices con la nueva definición de índice. Puede haber un retraso entre el momento en que recibes una respuesta del comando y el momento en que el índice actualizado está listo.

La definición anterior del índice aún puede soportar consultas mientras se construye el nuevo índice. Una vez que el nuevo índice termina de construirse, el antiguo ya no es utilizable. Para ver el estado de los índices de búsqueda, utiliza la etapa de agregación $listSearchIndexes.

Si el despliegue aplica control de acceso, el usuario que ejecuta updateSearchIndex() debe tener la acción de privilegio updateSearchIndex en la base de datos o colección:

{
resource: {
db : <database>,
collection: <collection>
},
actions: [ "updateSearchIndex" ]
}

Los roles readWrite integrados y restore otorgan el updateSearchIndex privilegio. El siguiente ejemplo otorga el readWrite rol en la qa base de datos:

db.grantRolesToUser(
"<user>",
[ { role: "readWrite", db: "qa" } ]
)

El siguiente ejemplo crea un nuevo índice de Atlas Search y luego actualiza ese índice.

  1. Cree un índice de búsqueda llamado searchIndex01 en la colección movies:

    db.movies.createSearchIndex(
    "searchIndex01",
    {
    mappings: { dynamic: true },
    storedSource: {
    exclude: [ "imdb.rating" ]
    }
    }
    )
  2. Actualizar el índice searchIndex01:

    db.movies.updateSearchIndex(
    "searchIndex01",
    {
    mappings: { dynamic: true },
    storedSource: {
    exclude: [ "movies" ]
    }
    }
    )

Volver

db.colección.getSearchIndexes

En esta página