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 Atlas Search indexa una colección específica.
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
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 identificador del índice sobre el que se devolverá información. |
| string | Opcional | El nombre del índice sobre el que se devolverá información. |
No se pueden especificar id y name a la vez. Si se omiten los campos id y name, $listSearchIndexes devuelve información sobre todos los índices de Atlas Search de la colección.
Control de acceso
Si su implementación aplica control de acceso, el usuario que ejecuta $listSearchIndexes debe tener la listSearchIndexes acción privilegiada sobre la base de datos o colección:
{ resource: { db : <database>, collection: <collection> }, actions: [ "listSearchIndexes" ] }
El rol integrado proporciona read el listSearchIndexes privilegio. El siguiente ejemplo otorga el read rol en la qa base de datos:
db.grantRolesToUser( "<user>", [ { role: "read", db: "qa" } ] )
Salida
$listSearchIndexes Devuelve una matriz de documentos. Cada documento de la matriz contiene los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| string | Identificador único para el índice. |
| string | Nombre del índice. |
| string | Estado del índice. Para más información, consulte Estados del índice de búsqueda en Atlas. |
| 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 en que se creó la definición del índice actual. |
| Documento | La definición más reciente del índice. Para más información, consulte Sintaxis de definición de índice de búsqueda. |
| conjunto de documentos | Contiene el estado del índice en cada host de búsqueda ( |
| string | Nombre de host del |
| string | Estado del índice en el |
| booleano | Indica si el índice está listo para ser consultado en el |
| Documento | Contiene información de estado sobre el índice activo en el Para obtener más detalles, consulte Detalles del estado del índice. |
| Documento | Contiene información de estado sobre un índice que se está creando en segundo plano en el Para obtener más detalles, consulte Detalles del estado del índice. |
| string | Estado de las asignaciones de sinónimos del índice. Este campo solo aparece si el índice tiene sinónimos definidos. Puede tener uno de los siguientes valores:
El estado devuelto es un resumen de las asignaciones de sinónimos en cada |
| conjunto de documentos | Contiene el estado de las asignaciones 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 |
| booleano | Indica si la asignación de sinónimos correspondiente puede admitir query en todos los procesos |
| string | Describe un error en la asignación de sinónimos, si corresponde. Solo aparece si el valor |
Detalles del estado del índice
La siguiente tabla describe los campos incrustados 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 las asignaciones de sinónimos del índice en el Para obtener más información, consulte Detalles de asignación de sinónimos. |
| Documento | Describe la versión de definición de índice con la que se está creando esta generación de índice. |
| entero | Número de versión que se utiliza para la generación del índice en el |
| fecha | Hora en que se creó la definición del índice. |
| Documento | La definición con la que se construye este índice. |
Detalles de 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 la asignación de sinónimos puede admitir consultas en el proceso |
| string | Describe un error en la asignación de sinónimos, si corresponde. Solo aparece si el valor |
Estados del índice de búsqueda de Atlas
El campo status en la salida $listSearchIndexes puede ser uno de los siguientes:
Estado | Descripción |
|---|---|
| Los siguientes escenarios pueden provocar que un índice esté en el estado
Cuando el índice está en el estado
Un índice en el estado |
| El índice no existe. Un índice en el estado |
| Atlas está eliminando el índice. Un índice en el estado |
| Error en la creación del índice. Los índices pueden entrar en el estado Un índice en el estado |
| Atlas aún no ha comenzado a desarrollar el índice. Un índice en el estado |
| El índice está listo y puede admitir consultas. 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 ingresar al estado Un índice en el estado |
Errors
Cambiado en la versión 7.0.3: Este comando genera 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 devuelve todos los índices de Atlas 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 } } ] } } ] } ]
Devolver 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 } } ] } } ] } ]
Devolver un índice de búsqueda único por id
El siguiente ejemplo devuelve el índice de búsqueda con el valor id proporcionado:
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 controlador Node.js proporciona un método auxiliar, listSearchIndexes(),que realiza la misma operación que la $listSearchIndexes etapa de canalización. Para obtener más información, consulte la página Índices en la documentación del controlador MongoDB Node.js.
Devolución de todos los índices de búsqueda
El siguiente ejemplo devuelve todos los índices de Atlas Search en una colección:
const pipeline = [{ $listSearchIndexes: {} }]; const cursor = collection.aggregate(pipeline); return cursor;
Devolver 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;
Devolver un índice de búsqueda único por id
El siguiente ejemplo devuelve el índice de búsqueda con el valor id proporcionado:
const pipeline = [{ $listSearchIndexes: { id: "6524096020da840844a4c4a7" } }]; const cursor = collection.aggregate(pipeline); return cursor;
Obtén más información
Para utilizar un mongosh método para ver los índices de Atlas Search,db.collection.getSearchIndexes() consulte.
Para crear índices de búsqueda de Atlas, consulte:
El
db.collection.createSearchIndex()mongoshmétodoEl
createSearchIndexescomando de base de datos