Definición
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, consulta el updateSearchIndex .
Para los drivers de API de MongoDB, consulte la documentación del driver de MongoDB específica del lenguaje.
Compatibilidad
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
Sintaxis del comando:
db.<collection>.updateSearchIndex( <name>, { <definition> } )
Campos de comandos
updateSearchIndex() toma estos campos:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| string | Requerido | Nombre del índice de búsqueda que se va a actualizar. |
| Documento | Requerido | Documento que describe el índice a crear. La sintaxis de |
Sintaxis de la definición del índice de búsqueda
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 |
|---|---|---|---|
| string | Opcional | Especifica el analizador para aplicar a los campos de string al indexar. Si omites este campo, el índice utiliza el analizador estándar. |
| string | Opcional | Especifica el analizador que se aplicará al texto de la query antes de que el texto sea buscado. Si omite este campo, el índice utiliza el mismo analizador especificado en el campo Si omites tanto el campo |
| Objeto | Requerido | Especifica cómo indexar campos en diferentes rutas para este índice. |
| booleano | Opcional | Habilita o deshabilita el mapeo dinámico de campos para este índice. Si se configura en Si se establece en Si se omite, es por defecto |
| Documento | Condicional | Requerido solo si el mapeo dinámico está deshabilitado. Especifica los campos a indexar. Para obtener más información, consulte fts-field-mappings. |
| arreglo | Opcional | Especifica los analizadores personalizados que se deben usar en este índice. |
| booleano o Definición de fuente almacenada | Opcional | Especifica los campos de document para almacenar en las consultas realizadas utilizando la opción returnedStoredSource. Puedes guardar campos de todos los bson-data-chart en Atlas Search. El valor
Si se omite, es por defecto Para aprender más, consulta Definición de fuente almacenada en fts.. |
| arreglo de Definiciones de mapeo de sinónimos | 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, consulta sinónimos-ref. |
Sintaxis de la definición del índice de búsqueda vectorial
La definición del índice de búsqueda vectorial tiene 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 avs-types-vector-search
Comportamiento
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.
Control de acceso
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 integrados readWrite y restore proporcionan el privilegio de updateSearchIndex. El siguiente ejemplo otorga el rol readWrite en la base de datos qa:
db.grantRolesToUser( "<user>", [ { role: "readWrite", db: "qa" } ] )
Ejemplo
El siguiente ejemplo crea un nuevo índice de búsqueda de Atlas y luego actualiza ese índice.
Cree un índice de búsqueda llamado
searchIndex01en la colecciónmovies:db.movies.createSearchIndex( "searchIndex01", { mappings: { dynamic: true }, storedSource: { exclude: [ "imdb.rating" ] } } ) Actualizar el índice
searchIndex01:db.movies.updateSearchIndex( "searchIndex01", { mappings: { dynamic: true }, storedSource: { exclude: [ "movies" ] } } )