Definición
Nuevo en la versión 7.0: (También disponible a partir de la versión 6.0.7)
Actualiza un existente Índice de búsqueda Atlas.
El método mongosh db.collection.updateSearchIndex() proporciona un contenedor alrededor del updateSearchIndex comando de base de datos.
Importante
Este comando solo se puede ejecutar en una implementación alojada en MongoDB Atlas y requiere un nivel de clúster Atlas de al menos10 M.
Sintaxis
Sintaxis del comando:
db.runCommand( { updateSearchIndex: "<collection name>", id: "<index Id>", name: "<index name>", definition: { /* search index definition fields */ } } )
Campos de comandos
El comando updateSearchIndex toma los siguientes campos:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| string | Requerido | Nombre de la colección que contiene el índice a actualizar. |
| string | Condicional |
Debe especificar el campo |
| string | Condicional | Nombre del índice a actualizar. Debe especificar el campo |
| Documento | Requerido | Documento que describe la definición actualizada del índice de búsqueda. La definición especificada reemplaza la anterior en el índice de búsqueda. Para más detalles sobre la sintaxis de |
Sintaxis de definición del índice de búsqueda
La definición del índice de búsqueda toma 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 que se aplicará a los campos de cadena durante la indexación. Si omite este campo, el índice utiliza el analizador estándar. |
| string | Opcional | Especifica el analizador que se aplicará para consultar el texto antes de buscarlo. Si omite este campo, el índice utiliza el mismo analizador especificado en el campo Si omite |
| Objeto | Requerido | Especifica cómo indexar campos en diferentes rutas para este índice. |
| booleano | Opcional | Habilita o deshabilita la asignación dinámica de campos para este índice. Si Si se establece en Si se omite, es por defecto |
| Documento | Condicional | Obligatorio sólo si el mapeo dinámico está deshabilitado. Especifica los campos para indexar. Para obtener más información, consulte Definir mapeos de campos. |
| arreglo | Opcional | Especifica los analizadores personalizados que se utilizarán en este índice. |
| Definición de fuentebooleana o almacenada | 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
Si se omite, es por defecto Para obtener más información, consulta Definir campos fuente almacenados en tu MongoDB Search. |
| Matriz 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, consulte Definir asignaciones de sinónimos en su índice de búsqueda de MongoDB. |
Comportamiento
El comando updateSearchIndex inicia la creación de un índice con la nueva definición. Puede haber un retraso entre la respuesta del comando y la disponibilidad del índice actualizado.
La definición del índice anterior aún admite consultas mientras se construye el nuevo. Una vez que el nuevo índice termina de construirse, el índice anterior deja de ser utilizable. Para ver el estado de sus índices de búsqueda, utilice la $listSearchIndexes etapa de agregación.
Control de acceso
Si su implementación aplica control de acceso, el usuario que ejecuta el updateSearchIndex comando debe tener el privilegio de acción en la base de datos o updateSearchIndex 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" } ] )
Salida
Un comando updateSearchIndex exitoso devuelve lo siguiente:
{ ok: 1 }
Importante
El campo de respuesta ok: 1 indica que el comando se ejecutó correctamente. Sin embargo, puede haber un retraso entre la recepción de la respuesta y el momento en que el índice actualizado esté listo y reemplace al original.
Para ver el estado de sus índices de búsqueda, utilice la $listSearchIndexes etapa de agregación.
Ejemplo
El siguiente ejemplo actualiza un índice de búsqueda llamado searchIndex01 en la colección contacts:
db.runCommand( { updateSearchIndex: "contacts", name: "searchIndex01", definition: { mappings: { dynamic: true }, storedSource: { exclude: [ "directors", "imdb.rating" ] } } } )