Atlas 搜索和向量搜索索引
概述
您可以使用 Kotlin 同步驱动程序程序化地管理您的Atlas Search 和 Atlas Vector Search 索引。
Atlas Search 允许您在 MongoDB Atlas 上托管的集合中执行全文搜索。Atlas Search 索引指定搜索的行为以及要索引的字段。
Atlas Vector Search 允许您在 MongoDB Atlas 中存储的向量嵌入上进行语义搜索。向量搜索索引定义了您要查询的向量嵌入的索引以及您想要用于预筛选数据的布尔值、日期、objectId、数值、字符串或 UUID 值。
您可以在集合上调用以下方法来管理您的 Atlas Search 和 Vector Search 索引
createSearchIndex()
(仅适用于 Atlas Search 索引)createSearchIndexes()
listSearchIndexes()
updateSearchIndex()
dropSearchIndex()
注意
Atlas Search 和 Vector Search 索引管理方法异步运行,可能在他们运行成功之前就返回。为了确定索引的当前状态,请调用 listSearchIndexes()
方法或查看 Atlas UI 中的索引列表。
以下部分提供了代码示例,展示了如何使用前面提到的方法。
创建搜索索引
您可以使用 createSearchIndex() 方法创建单个 Atlas Search 索引。您 不能 使用此方法创建 Vector Search 索引。
您可以使用 createSearchIndexes() 方法创建多个 Atlas Search 或 Vector Search 索引。您必须为每个索引创建一个 SearchIndexModel 实例,然后将 SearchIndexModel
实例的列表传递给 createSearchIndexes()
方法。
以下代码示例展示了如何创建 Atlas Search 索引:
val index = Document("mappings", Document("dynamic", true)) collection.createSearchIndex("mySearchIdx", index)
以下代码示例展示了如何在一次调用中创建 Atlas Search 和 Vector Search 索引
val searchIdxMdl = SearchIndexModel( "searchIdx", Document("analyzer", "lucene.standard").append( "mappings", Document("dynamic", true) ), SearchIndexType.search() ) val vectorSearchIdxMdl = SearchIndexModel( "vsIdx", Document( "fields", listOf( Document("type", "vector") .append("path", "embeddings") .append("numDimensions", 1536) .append("similarity", "dotProduct") ) ), SearchIndexType.vectorSearch() ) collection.createSearchIndexes( listOf(searchIdxMdl, vectorSearchIdxMdl) )
要了解用于定义 Atlas Search 索引的语法,请参阅 Atlas 文档中的查看 Atlas Search 索引语法指南。
列出搜索索引
您可以使用listSearchIndexes()方法来返回集合中所有的 Atlas Search 索引。
以下代码示例展示了如何打印集合中搜索索引的列表
val results = collection.listSearchIndexes() results.forEach { result -> println(result) }
更新搜索索引
您可以使用 updateSearchIndex() 方法更新 Atlas 搜索索引。
以下代码展示了如何更新搜索索引
val newIndex = Document("mappings", Document("dynamic", true)) collection.updateSearchIndex("<index to update>", newIndex)
删除搜索索引
您可以使用 dropSearchIndex() 方法删除 Atlas 搜索索引。
以下代码展示了如何从集合中删除搜索索引
collection.dropIndex("<index to delete>")
附加信息
要了解更多关于MongoDB Atlas Search的信息,请参阅Atlas Search 索引文档。