Docs Menu
Docs Home
/ /

createSearchIndexes (comando de base de datos)

createSearchIndexes

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

Crea uno o más Atlas Search indexa una colección específica.

El método mongosh db.collection.createSearchIndex() proporciona un contenedor alrededor del createSearchIndexes 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 del comando:

db.runCommand(
{
createSearchIndexes: "<collection name>",
indexes: [
{
name: "<index name>",
definition: {
/* search index definition fields */
}
},
...
]
}
)

El comando createSearchIndexes toma los siguientes campos:

Campo
Tipo
Necesidad
Descripción

createSearchIndexes

string

Requerido

Nombre de la colección en la que se creará el índice de búsqueda.

indexes

arreglo

Requerido

Matriz de documentos que describen los índices a crear.

indexes.name

string

Opcional

Nombre del índice de búsqueda a crear.

No se pueden crear varios índices con el mismo nombre en una sola colección.

Si no especificas un name, el índice se denomina default.

indexes.definition

Documento

Requerido

Documento que describe el índice que se creará. Para más información sobre la definition sintaxis, consulte Sintaxis de definición de í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

analyzer

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.

searchAnalyzer

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 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 la asignación dinámica 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 campos individuales para indexar utilizando mappings.fields.

Si se omite, es por defecto false.

mappings.fields

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.

analyzers

arreglo

Opcional

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

storedSource

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 storedSource valor puede ser uno de los siguientes:

  • true, para almacenar todos los campos

  • false, para no almacenar ningún campo

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

Si se omite, es por defecto false.

Para obtener más información, consulta Definir campos fuente almacenados en tu MongoDB Search.

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 Definir asignaciones de sinónimos en su índice de búsqueda de MongoDB.

El comando createSearchIndexes activa la creación de un índice. Puede haber un retraso entre la respuesta del comando y la preparación del índice.

Para ver el estado de sus índices de búsqueda, utilice la $listSearchIndexes etapa de agregación.

Si su implementación aplica control de acceso, el usuario que ejecuta el createSearchIndexes comando debe tener el privilegio de acción en la base de datos o createSearchIndexes colección:

{
resource: {
db : <database>,
collection: <collection>
},
actions: [ "createSearchIndexes" ]
}

El rol integrado proporciona readWrite el createSearchIndexes privilegio. El siguiente ejemplo otorga a accountUser01 el readWrite rol en la products base de datos:

db.grantRolesToUser(
"accountUser01",
[ { role: "readWrite", db: "products" } ]
)

La salida del comando createSearchIndexes se parece a lo siguiente:

{
ok: 1,
indexesCreated: [
{
id: "<index Id>",
name: "<index name>"
}
]
}

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 los índices creados estén listos para su uso.

Para ver el estado de sus índices de búsqueda, utilice la $listSearchIndexes etapa de agregación.

El siguiente ejemplo crea un índice de búsqueda llamado searchIndex01 en la colección contacts:

db.runCommand( {
createSearchIndexes: "contacts",
indexes: [
{
name: "searchIndex01",
definition: { mappings: { dynamic: true } }
}
]
} )

La definición del mappings: { dynamic: true } índice especifica, lo que significa que el índice contiene todos los campos de la colección que tienen tipos de datos admitidos.

Un analizador de lenguaje introduce palabras vacías, que son palabras 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.runCommand( {
createSearchIndexes: "cars",
indexes: [
{
name: "frenchIndex01",
definition: {
mappings: {
fields: {
subject: {
fields: {
fr: {
analyzer: "lucene.french",
type: "string"
}
},
type: "document"
}
}
}
}
}
]
} )

Para obtener más información sobre los analizadores de lenguaje, consulte Analizadores de lenguaje.

El siguiente comando crea dos índices de búsqueda en la colección products, searchIndex02 y searchIndex03:

db.runCommand( {
createSearchIndexes: "products",
indexes: [
{
name: "searchIndex02",
definition: {
mappings: {
fields: {
title: {
type: "string",
analyzer: "lucene.simple"
}
}
}
}
},
{
name: "searchIndex03",
definition:
{
mappings: { dynamic: true }
}
}
]
} )

searchIndex02 Utiliza un analizador simple en el title campo. Este analizador divide el texto en términos de búsqueda según caracteres no alfabéticos, como espacios, signos de puntuación o dígitos.

searchIndex03 utiliza un mapeo de campos dinámico, lo que significa que el índice contiene todos los campos de la colección que tienen tipos de datos admitidos.

Volver

Búsqueda de Atlas

En esta página