Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

updateSearchIndex (comando de base de datos)

updateSearchIndex

Nuevo en la versión 7.0: (También disponible a partir de la versión 6.0.7)

Actualiza uno existente Índice de búsqueda de Atlas.

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 del comando:

db.runCommand(
{
updateSearchIndex: "<collection name>",
id: "<index Id>",
name: "<index name>",
definition: {
/* search index definition fields */
}
}
)

El comando updateSearchIndex toma los siguientes campos:

Campo
Tipo
Necesidad
Descripción

updateSearchIndex

string

Requerido

Nombre de la colección que contiene el índice que se va a actualizar.

id

string

Condicional

id del índice a actualizar.

Debes especificar ya sea el campo id o name.

name

string

Condicional

Nombre del índice a actualizar.

Debes especificar ya sea el campo id o name.

definition

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 definition, consulta la Sintaxis de 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

analyzer

string

Opcional

searchAnalyzer

string

Opcional

Especifica el analizador que se aplicará al texto de la consulta antes de realizar la búsqueda.

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

Si omite searchAnalyzer los analyzer campos y, el índice utiliza 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 true se establece en, 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 que se van a indexar. Para obtener más información, consulte fts-field-mappings.

analyzers

arreglo

Opcional

Especifica los analizadores personalizados que se utilizarán en este índice.

storedSource

Opcional

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

Puedes almacenar campos de todos los gráficos bson-data-chart en Atlas Search. El storedSource valor puede ser uno de estos:

  • true, para almacenar todos los campos

  • false, para no almacenar ningún campo

  • Un objeto que especifica los campos a include o exclude del almacenamiento

Si se omite, es por defecto false.

Para obtener más información, consulte fts-stored-source-definition.

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 synonyms-ref.

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.

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 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" } ]
)

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.

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" ]
}
}
} )

Volver

dropSearchIndex

En esta página