Definición
Novedades en la versión 6.0.7.
Crea un índice Atlas Search o un índice Atlas Vector Search en una colección específica.
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 createSearchIndexes dominio.
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>.createSearchIndex( <name>, { <definition> } )
Campos de comandos
createSearchIndex() toma estos campos:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| string | Opcional | Nombre del índice de búsqueda que se va a crear. No puedes crear varios índices con el mismo nombre en una sola colección. Si no especificas un |
| Documento | Requerido | Documento que describe el índice a crear. Para obtener detalles sobre la sintaxis |
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
createSearchIndex() desencadena una creación de índices. Puede haber un retraso entre el momento en que recibes la respuesta del comando y la disponibilidad del índice.
Para ver el estado de tus índices de búsqueda, utiliza el etapa de agregación $listSearchIndexes.
Control de acceso
Si el despliegue aplica control de acceso, el usuario que ejecuta createSearchIndex() debe tener la acción de privilegio createSearchIndexes en la base de datos o colección:
{ resource: { db : <database>, collection: <collection> }, actions: [ "createSearchIndexes" ] }
El rol readWrite incorporado otorga el privilegio de createSearchIndexes. El siguiente ejemplo otorga a accountUser01 el rol readWrite en la base de datos products:
db.grantRolesToUser( "accountUser01", [ { role: "readWrite", db: "products" } ] )
Ejemplos
Crear un índice de búsqueda en todos los campos
El siguiente ejemplo crea un índice de búsqueda denominado searchIndex01 en la colección movies:
db.movies.createSearchIndex( "searchIndex01", { mappings: { dynamic: true } } )
La definición del índice especifica mappings: { dynamic: true }, lo que significa que el índice contiene todos los campos en la colección que tienen tipos de datos soportados.
Crear un índice de búsqueda con un analizador de idiomas
Un analizador de lenguaje introduce palabras vacías, que son aquellas que no son lo suficientemente significativas como para ser indexadas.
El siguiente ejemplo crea un índice de búsqueda llamado frenchIndex01 en la colección cars y especifica el analizador lucene.french en el campo fr:
db.cars.createSearchIndex( "frenchIndex01", { mappings: { fields: { subject: { fields: { fr: { analyzer: "lucene.french", type: "string" } }, type: "document" } } } } )
Para obtener más información sobre los analizadores de lenguaje, consulta Analizadores de lenguaje.
Crear un índice de búsqueda con el nombre predeterminado
El siguiente método createSearchIndex() solo especifica la definición del índice y omite el nombre del índice. El comando crea un índice de búsqueda con el nombre default en la colección food:
db.food.createSearchIndex( { mappings: { fields: { title: { type: "string" } } } } )