Definición
Novedades en la versión 6.0.7.
Actualiza un índice de búsqueda de Atlas existente.
El método mongosh db.collection.updateSearchIndex() proporciona un contenedor alrededor del comando de base de datos updateSearchIndex.
Importante
Este comando solo se puede ejecutar en una implementación alojada en MongoDB Atlas y requiere un nivel de clúster de Atlas de al menos M10.
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 |
Debes especificar ya sea el campo |
| string | Condicional | Nombre del índice a actualizar. Debes especificar ya sea el campo |
| Documento | Requerido | Documento que describe la definición actualizada del índice de búsqueda. La definición especificada reemplaza la definición anterior en el índice de búsqueda. Para más detalles sobre 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 a aplicar a los campos de string durante la indexación. Si omite este campo, el índice utiliza el analizador estándar. |
| 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 Si omites tanto los campos |
| 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 para indexar. Para obtener más información, consulte Definir mapeos de campos. |
| arreglo | Opcional | Especifica los Analizadores personalizados que se deben usar en este índice. |
| booleano o Definición de fuente 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. |
| 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, consulte Definir asignaciones de sinónimos en su índice de búsqueda de MongoDB. |
Comportamiento
El comando 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 tu implementación aplica un control de acceso, el usuario que ejecute el comando 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" } ] )
Salida
Un comando updateSearchIndex exitoso devuelve lo siguiente:
{ ok: 1 }
Importante
El campo de respuesta ok: 1 indica que el comando fue exitoso. Sin embargo, puede haber una demora entre el momento en que recibes la respuesta y cuando el índice actualizado esté listo y reemplace al índice original.
Para ver el estado de tus índices de búsqueda, utiliza el etapa de agregación $listSearchIndexes.
Ejemplo
El siguiente ejemplo actualiza un índice de búsqueda denominado searchIndex01 en la colección contacts:
db.runCommand( { updateSearchIndex: "contacts", name: "searchIndex01", definition: { mappings: { dynamic: true }, storedSource: { exclude: [ "directors", "imdb.rating" ] } } } )