$listSearchIndexes(聚合)
定义
7.0 版本中的新增功能:(也可从 6.0.7 开始使用)
返回指定集合上现有 Atlas Search索引的信息。
重要
此命令只能在MongoDB Atlas托管的部署上运行,并且需要至少 M 10的 Atlas 集群层。
语法
命令语法:
db.<collection>.aggregate( [ { $listSearchIndexes: { id: <indexId>, name: <indexName> } } ] )
命令字段
$listSearchIndexes
接受以下任一字段:
字段 | 类型 | 必要性 | 说明 |
---|---|---|---|
| 字符串 | Optional | 要返回其相关信息的索引的 ID。 |
| 字符串 | Optional | 要返回其相关信息的索引的名称。 |
不能同时指定 id
和 name
。如果同时省略 id
和 name
字段,$listSearchIndexes
将返回有关集合上所有 Atlas Search 索引的信息。
访问控制
如果您的部署强制执行访问权限控制,则运行$listSearchIndexes
的用户必须对数据库或集合具有 listSearchIndexes
动作权限:
{ resource: { db : <database>, collection: <collection> }, actions: [ "listSearchIndexes" ] }
内置的 read
角色提供 listSearchIndexes
权限。以下示例在 qa
数据库上授予 read
角色:
db.grantRolesToUser( "<user>", [ { role: "read", db: "qa" } ] )
输出
$listSearchIndexes
返回一个文档大量。 大量中的每个文档都包含以下字段:
字段 | 类型 | 说明 |
---|---|---|
| 字符串 | 索引的唯一标识符。 |
| 字符串 | 索引名称。 |
| 字符串 | 索引的状态。有关更多信息,请参阅Atlas Search索引状态。 |
| 布尔 | 表示索引是否准备好进行查询。 |
| 文档 | 描述索引的版本。 |
| 整型 | 与索引定义关联的版本号。更新索引定义时,版本号会自动递增。 |
| 日期 | 创建当前索引定义的时间。 |
| 文档 | 该索引的最新定义。有关更多信息,请参阅搜索索引定义语法。 |
| 文档数组 | 包含每个搜索主机上索引的状态 ( |
| 字符串 | 相应 |
| 字符串 | 相应 |
| 布尔 | 表示索引是否可以在相应的 |
| 文档 | |
| 文档 | |
| 字符串 | |
| 文档数组 | 包含每个搜索托管 ( |
| 字符串 | 所有 |
| 布尔 | 指示相应的同义词映射是否可以支持跨所有 |
| 字符串 | 描述同义词映射的错误(如果适用)。仅当此同义词映射的 |
索引状态详情
下表描述了以下文档的嵌入字段:- statusDetail.[mongot].mainIndex
- statusDetail.[mongot].stagedIndex
这些字段描述了特定 mongot
的索引状态。
字段 | 类型 | 说明 |
---|---|---|
| 字符串 | 相应 |
| 布尔 | 表示索引生成是否已准备好在相应的 |
| 字符串 | 索引生成的同义词映射在相应 |
| 文档 | |
| 文档 | 描述用于构建此索引生成的索引定义版本。 |
| 整型 | 索引生成在相应 |
| 日期 | 索引定义创建的时间。 |
| 文档 | 建立该索引时使用的定义。 |
同义词映射详情
下表描述了以下对象的嵌入字段:
statusDetail.mainIndex.synonymMappingStatusDetails.<synonymMapping>
statusDetail.stagedIndex.synonymMappingStatusDetails<synonymMapping>
字段 | 类型 | 说明 |
---|---|---|
| 字符串 | 跨相应 |
| 布尔 | 指示相应的同义词映射是否可以支持对相应 |
| 字符串 | 描述同义词映射的错误(如果适用)。仅当此同义词映射的 |
Atlas Search 索引状态
$listSearchIndexes
输出中的 status
字段可以是以下之一:
状态 | 说明 |
---|---|
| 以下情况可能导致索引处于
当索引处于
处于 |
| 该索引不存在。 处于 |
| Atlas 正在删除索引。 处于 |
| 索引构建失败。由于索引定义无效,索引可能会进入 处于 |
| Atlas 尚未开始构建索引。 处于 |
| 索引已准备好,可以支持查询。 处于 |
| 索引是可查询的,但已停止从索引集合复制数据。对索引的搜索可能会返回过时的数据。 由于复制错误,索引可能会进入 处于 |
Errors
在版本 7.0.3 中更改:此命令在 Atlas 上未执行时会引发错误。
db.names.aggregate( [ { $listSearchIndexes: { } } ] )
MongoServerError: PlanExecutor error during aggregation :: caused by :: Search index commands are only supported with Atlas.
在以前的版本中,如果未在 Atlas 上执行此命令,则此命令会返回空结果。
示例
以下示例演示了如何:
返回所有搜索索引
以下示例返回 movies
集合上的所有 Atlas Search 索引:
db.movies.aggregate( [ { $listSearchIndexes: { } } ] )
示例输出:
[ { 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 } } ] } } ] } ]
按名称返回单个搜索索引
以下示例返回 movies
集合上名为 synonym-mappings
的索引:
db.movies.aggregate( [ { $listSearchIndexes: { name: "synonym-mappings" } } ] )
示例输出:
[ { 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 } } ] } } ] } ]
按 ID 返回单个搜索索引
以下示例返回具有所提供 id
的搜索索引:
db.movies.aggregate( [ { $listSearchIndexes: { id: "6524096020da840844a4c4a7" } } ] )
示例输出:
[ { 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: {} } } } } ] } ]
了解详情
要使用 mongosh
方法查看 Atlas Search 索引,请参阅 db.collection.getSearchIndexes()
。
要创建 Atlas Search 索引,请参阅:
db.collection.createSearchIndex()
mongosh
方法createSearchIndexes
数据库命令。