Definición
Nuevo en la versión 7.0: (También disponible a partir de la versión 6.0.7)
Devuelve información sobre los existentes MongoDB Search índices en una colección o vista especificada.
Sintaxis
Sintaxis del comando:
db.<collection>.aggregate( [ { $listSearchIndexes: { id: <indexId>, name: <indexName> } } ] )
Campos de comandos
$listSearchIndexes toma cualquiera de los siguientes campos:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| string | Opcional | El id del índice sobre el que se desea obtener información. |
| string | Opcional | El nombre del índice sobre el que se devolverá la información. |
No se pueden especificar tanto id como name. Si omites ambos campos, el id y el name, $listSearchIndexes devuelve información sobre todos los índices de MongoDB Search en la colección.
Control de acceso
Si tu implementación aplica control de acceso, el usuario que ejecute $listSearchIndexes debe tener el listSearchIndexes acción de privilegio en la base de datos o colección:
{ resource: { db : <database>, collection: <collection> }, actions: [ "listSearchIndexes" ] }
El rol integrado read proporciona el privilegio de listSearchIndexes. El siguiente ejemplo otorga el rol read en la base de datos qa:
db.grantRolesToUser( "<user>", [ { role: "read", db: "qa" } ] )
Salida
$listSearchIndexes devuelve un arreglo de documentos. Cada documento en el arreglo contiene los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| string | Identificador único del índice. |
| string | Nombre del índice. |
| string | Estado del índice. Para más información, consulta Estados de índices de MongoDB Search. |
| booleano | Indica si el índice está listo para ser consultado. |
| Documento | Describe la versión del índice. |
| entero | Número de versión asociado con la definición del índice. Cuando se actualiza una definición de índice, el número de versión se incrementa automáticamente. |
| fecha | Hora cuando se creó la definición actual del índice. |
| Documento | La definición más reciente del índice. Para más información, consulta Sintaxis de la Definición del Índice de Búsqueda. |
| arreglo de documentos | Contiene el estado del índice en cada host de búsqueda ( |
| string | Hostname del Puede especificar el |
| string | Estado del índice en el correspondiente |
| booleano | Indica si el índice está listo para ser query en el correspondiente |
| Documento | Contiene información de estado sobre el índice activo en el correspondiente Para obtener más detalles, consulta Detalles del estado del índice. |
| Documento | Contiene información de estado sobre un índice que se está construyendo en segundo plano en el Para obtener más detalles, consulta Detalles del estado del índice. |
| string | Estado de los mapeos de sinónimos del índice. Este campo solo aparece si el índice tiene sinónimos definidos. Puede ser uno de los siguientes valores:
El estado devuelto es un resumen de los mapeos de sinónimos en cada |
| arreglo de documentos | Contiene el estado de los mapeos de sinónimos del índice en cada host de búsqueda ( |
| string | Estado de la asignación de sinónimos correspondiente en todos los procesos de |
| booleano | Indica si la asignación de sinónimos correspondiente puede admitir query en todos los procesos |
| string | Describe un error para el mapeo de sinónimos, si corresponde. Solo aparece si el |
Detalles del estado del índice
La siguiente tabla describe los campos integrados de los siguientes documentos: - statusDetail.[mongot].mainIndex - statusDetail.[mongot].stagedIndex
Los campos describen el estado del índice en un mongot específico.
Campo | Tipo | Descripción |
|---|---|---|
| string | El estado de la generación del índice en el |
| booleano | Indica si la generación del índice está lista para ser consultada en el |
| string | El estado de los mapeos de sinónimos de la generación de índices en el |
| Documento | Contiene el estado de los mapeos de sinónimos del índice en el correspondiente Para más información, consulta Detalles de mapeo de sinónimos. |
| Documento | Describe la versión de definición del índice con la que se está compilando esta generación de índices. |
| entero | Número de versión que la generación del índice está utilizando en el correspondiente |
| fecha | Hora en que se creó la definición del índice. |
| Documento | La definición con la que se está construyendo este índice. |
Detalles del mapeo de sinónimos
La siguiente tabla describe los campos embebidos de los siguientes objetos:
statusDetail.mainIndex.synonymMappingStatusDetails.<synonymMapping>statusDetail.stagedIndex.synonymMappingStatusDetails<synonymMapping>
Campo | Tipo | Descripción |
|---|---|---|
| string | Estado para la mapeo de sinónimos en el proceso correspondiente |
| booleano | Indica si el mapeo de sinónimos puede admitir query sobre el proceso |
| string | Describe un error para el mapeo de sinónimos, si corresponde. Solo aparece si el |
Estados del índice de búsqueda de MongoDB
El campo status en la salida de $listSearchIndexes puede ser uno de los siguientes:
Estado | Descripción |
|---|---|
| Los siguientes escenarios pueden provocar que un índice se encuentre en el estado
Cuando el índice está en el estado
Un índice en el estado |
| El índice no existe. Un índice en el estado |
| MongoDB está borrando el índice. Un índice en el estado |
| La creación de índices falló. Los índices pueden entrar en el estado Un índice en el estado |
| MongoDB aún no ha comenzado a crear el índice. Un índice en el estado |
| El índice está listo y puede soportar queries. Un índice en el estado |
| El índice es consultable pero ha dejado de replicar datos de la colección indexada. Las búsquedas en el índice pueden devolver datos desactualizados. Los índices pueden entrar en el estado Un índice en el estado |
Errors
Cambiado en la versión 7.1: este comando arroja un error cuando no se ejecuta en Atlas.
db.names.aggregate( [ { $listSearchIndexes: { } } ] )
MongoServerError: PlanExecutor error during aggregation :: caused by :: Search index commands are only supported with Atlas.
En versiones anteriores, este comando devuelve un resultado vacío cuando no se ejecuta en Atlas.
Ejemplos
Estos ejemplos demuestran cómo realizar las siguientes acciones:
Devolución de todos los índices de búsqueda
El siguiente ejemplo retorna todos los índices de búsqueda de MongoDB Search en la colección movies:
db.movies.aggregate( [ { $listSearchIndexes: { } } ] )
Salida de muestra:
[ { id: '6524096020da840844a4c4a7', name: 'default', status: 'BUILDING', queryable: true, latestDefinitionVersion: { version: 2, createdAt: ISODate("2023-10-09T14:51:57.355Z") }, latestDefinition: { mappings: { dynamic: true }, storedSource: { include: [ 'awards.text' ] } }, statusDetail: [ { hostname: 'atlas-n1cm1j-shard-00-02', status: 'BUILDING', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:08:32.000Z") }, definition: { mappings: { dynamic: true, fields: {} } } }, stagedIndex: { status: 'PENDING', queryable: false, definitionVersion: { version: 1, createdAt: ISODate("2023-10-09T14:51:29.000Z") }, definition: { mappings: { dynamic: true, fields: {} }, storedSource: true } } }, { hostname: 'atlas-n1cm1j-shard-00-01', status: 'BUILDING', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:08:32.000Z") }, definition: { mappings: { dynamic: true, fields: {} } } }, stagedIndex: { status: 'PENDING', queryable: false, definitionVersion: { version: 1, createdAt: ISODate("2023-10-09T14:51:29.000Z") }, definition: { mappings: { dynamic: true, fields: {} }, storedSource: true } } }, { hostname: 'atlas-n1cm1j-shard-00-00', status: 'BUILDING', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:08:32.000Z") }, definition: { mappings: { dynamic: true, fields: {} } } } } ] }, { id: '65240be420da840844a4d077', name: 'synonym_mappings', status: 'READY', queryable: true, latestDefinitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:19:16.305Z") }, latestDefinition: { mappings: { dynamic: true, fields: { fullplot: { type: 'string' } } }, synonyms: [ { name: 'synonym_mapping', analyzer: 'lucene.english', source: { collection: 'synonyms' } } ] }, synonymMappingStatus: 'READY', synonymMappingStatusDetail: [ { synonym_mapping: { status: 'READY', queryable: true } } ], statusDetail: [ { hostname: 'atlas-n1cm1j-shard-00-02', status: 'READY', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:19:16.000Z") }, definition: { mappings: { dynamic: true, fields: { fullplot: { type: 'string', indexOptions: 'offsets', store: true, norms: 'include' } } }, synonyms: [ { name: 'synonym_mapping', analyzer: 'lucene.english', source: { collection: 'synonyms' } } ] }, synonymMappingStatus: 'READY', synonymMappingStatusDetail: [ { synonym_mapping: { status: 'READY', queryable: true } } ] } }, { hostname: 'atlas-n1cm1j-shard-00-01', status: 'READY', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:19:16.000Z") }, definition: { mappings: { dynamic: true, fields: { fullplot: { type: 'string', indexOptions: 'offsets', store: true, norms: 'include' } } }, synonyms: [ { name: 'synonym_mapping', analyzer: 'lucene.english', source: { collection: 'synonyms' } } ] }, synonymMappingStatus: 'READY', synonymMappingStatusDetail: [ { synonym_mapping: { status: 'READY', queryable: true } } ] } }, { hostname: 'atlas-n1cm1j-shard-00-00', status: 'READY', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:19:16.000Z") }, definition: { mappings: { dynamic: true, fields: { fullplot: { type: 'string', indexOptions: 'offsets', store: true, norms: 'include' } } }, synonyms: [ { name: 'synonym_mapping', analyzer: 'lucene.english', source: { collection: 'synonyms' } } ] }, synonymMappingStatus: 'READY', synonymMappingStatusDetail: [ { synonym_mapping: { status: 'READY', queryable: true } } ] } } ] } ]
Devuelve un único índice de búsqueda por nombre
El siguiente ejemplo devuelve el índice llamado synonym-mappings en la colección movies:
db.movies.aggregate( [ { $listSearchIndexes: { name: "synonym-mappings" } } ] )
Salida de muestra:
[ { id: '65240be420da840844a4d077', name: 'synonym_mappings', status: 'READY', queryable: true, latestDefinitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:19:16.305Z") }, latestDefinition: { mappings: { dynamic: true, fields: { fullplot: { type: 'string' } } }, synonyms: [ { name: 'synonym_mapping', analyzer: 'lucene.english', source: { collection: 'synonyms' } } ] }, synonymMappingStatus: 'READY', synonymMappingStatusDetail: [ { synonym_mapping: { status: 'READY', queryable: true } } ], statusDetail: [ { hostname: 'atlas-n1cm1j-shard-00-02', status: 'READY', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:19:16.000Z") }, definition: { mappings: { dynamic: true, fields: { fullplot: { type: 'string', indexOptions: 'offsets', store: true, norms: 'include' } } }, synonyms: [ { name: 'synonym_mapping', analyzer: 'lucene.english', source: { collection: 'synonyms' } } ] }, synonymMappingStatus: 'READY', synonymMappingStatusDetail: [ { synonym_mapping: { status: 'READY', queryable: true } } ] } }, { hostname: 'atlas-n1cm1j-shard-00-01', status: 'READY', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:19:16.000Z") }, definition: { mappings: { dynamic: true, fields: { fullplot: { type: 'string', indexOptions: 'offsets', store: true, norms: 'include' } } }, synonyms: [ { name: 'synonym_mapping', analyzer: 'lucene.english', source: { collection: 'synonyms' } } ] }, synonymMappingStatus: 'READY', synonymMappingStatusDetail: [ { synonym_mapping: { status: 'READY', queryable: true } } ] } }, { hostname: 'atlas-n1cm1j-shard-00-00', status: 'READY', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:19:16.000Z") }, definition: { mappings: { dynamic: true, fields: { fullplot: { type: 'string', indexOptions: 'offsets', store: true, norms: 'include' } } }, synonyms: [ { name: 'synonym_mapping', analyzer: 'lucene.english', source: { collection: 'synonyms' } } ] }, synonymMappingStatus: 'READY', synonymMappingStatusDetail: [ { synonym_mapping: { status: 'READY', queryable: true } } ] } } ] } ]
Devuelve un solo índice de búsqueda por ID
El siguiente ejemplo devuelve el índice de búsqueda con el valor proporcionado de id:
db.movies.aggregate( [ { $listSearchIndexes: { id: "6524096020da840844a4c4a7" } } ] )
Salida de muestra:
[ { id: '6524096020da840844a4c4a7', name: 'default', status: 'BUILDING', queryable: true, latestDefinitionVersion: { version: 2, createdAt: ISODate("2023-10-09T14:51:57.355Z") }, latestDefinition: { mappings: { dynamic: true }, storedSource: { include: [ 'awards.text' ] } }, statusDetail: [ { hostname: 'atlas-n1cm1j-shard-00-02', status: 'BUILDING', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:08:32.000Z") }, definition: { mappings: { dynamic: true, fields: {} } } }, stagedIndex: { status: 'PENDING', queryable: false, definitionVersion: { version: 1, createdAt: ISODate("2023-10-09T14:51:29.000Z") }, definition: { mappings: { dynamic: true, fields: {} }, storedSource: true } } }, { hostname: 'atlas-n1cm1j-shard-00-01', status: 'BUILDING', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:08:32.000Z") }, definition: { mappings: { dynamic: true, fields: {} } } }, stagedIndex: { status: 'PENDING', queryable: false, definitionVersion: { version: 1, createdAt: ISODate("2023-10-09T14:51:29.000Z") }, definition: { mappings: { dynamic: true, fields: {} }, storedSource: true } } }, { hostname: 'atlas-n1cm1j-shard-00-00', status: 'BUILDING', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:08:32.000Z") }, definition: { mappings: { dynamic: true, fields: {} } } } } ] } ]
Para utilizar el controlador de MongoDB Node.js para agregar una etapa de $listSearchIndexes a una canalización de agregación, utilice el Operador $listSearchIndexes en un objeto de canalización.
Nota
El driver de Node.js proporciona un método asistente, listSearchIndexes(), que realiza la misma operación que la etapa $listSearchIndexes de la pipeline. Para obtener más información, consulta la página Índices en la documentación del driver de Node.js de MongoDB.
Devolución de todos los índices de búsqueda
El siguiente ejemplo devuelve todos los índices de búsqueda de MongoDB Search en una colección:
const pipeline = [{ $listSearchIndexes: {} }]; const cursor = collection.aggregate(pipeline); return cursor;
Devuelve un único índice de búsqueda por nombre
El siguiente ejemplo devuelve el índice llamado synonym-mappings:
const pipeline = [{ $listSearchIndexes: { name: "synonym-mappings" } }]; const cursor = collection.aggregate(pipeline); return cursor;
Devuelve un solo índice de búsqueda por ID
El siguiente ejemplo devuelve el índice de búsqueda con el valor proporcionado de id:
const pipeline = [{ $listSearchIndexes: { id: "6524096020da840844a4c4a7" } }]; const cursor = collection.aggregate(pipeline); return cursor;
Obtén más información
Para usar un método mongosh para ver los índices de búsqueda de MongoDB, consulta db.collection.getSearchIndexes().
Para crear MongoDB Search índices, consulta:
El método
db.collection.createSearchIndex()mongoshEl comando de base de datos
createSearchIndexes