Overview
您可以使用 Kotlin 同步 驱动程序以编程方式管理MongoDB 搜索和MongoDB 向量搜索搜索索引。
MongoDB Search 使您能够对MongoDB Atlas上托管的集合执行全文搜索。MongoDB 搜索索引指定搜索行为以及要索引的字段。
MongoDB 向量搜索使您能够对存储在 MongoDB Atlas 中的向量嵌入执行语义搜索。向量搜索索引定义要查询的向量嵌入的索引,以及要用于数据过滤器的布尔值、日期、objectId、数字、string 或 UUID 值。
您可以在集合上调用以下方法来管理MongoDB 搜索 和 Vector 搜索 搜索索引:
createSearchIndex()(仅对MongoDB 搜索索引有效)createSearchIndexes()listSearchIndexes()updateSearchIndex()dropSearchIndex()
注意
MongoDB Search 和 Vector Search索引管理方法异步运行,可能会在确认运行成功之前返回。要确定索引的当前状态,请调用 listSearchIndexes() 方法或在Atlas 用户界面中查看索引列表。
以下各节将提供代码示例,演示如何使用上述每种方法。
创建搜索索引
您可以使用 createSearchIndex() 方法创建单个MongoDB搜索索引。您不能使用此方法创建 Vector Search索引。
您可以使用 createSearchIndexes() 方法创建多个 MongoDB 搜索 或 Vector 搜索 搜索索引。您必须为每个索引创建一个SearchIndexModel实例,然后将 SearchIndexModel 实例列表传递给 createSearchIndexes() 方法。
以下代码示例展示了如何创建MongoDB搜索索引:
val index = Document("mappings", Document("dynamic", true)) collection.createSearchIndex("mySearchIdx", index)
以下代码示例展示了如何在一次调用中创建MongoDB 搜索和 Vector 搜索搜索索引:
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) )
要了解有关用于定义MongoDB Search 索引的语法的更多信息,请参阅Atlas文档中的查看MongoDB 搜索索引语法指南。
搜索索引列表
您可以使用listSearchIndexes()方法返回集合中的所有MongoDB搜索索引。
以下代码示例显示如何打印集合的搜索索引列表:
val results = collection.listSearchIndexes() results.forEach { result -> println(result) }
更新搜索索引
您可以使用 updateSearchIndex() 方法更新 MongoDB 搜索索引。
以下代码展示如何更新搜索索引:
val newIndex = Document("mappings", Document("dynamic", true)) collection.updateSearchIndex("<index to update>", newIndex)
删除搜索索引
您可以使用 dropSearchIndex() 方法删除 MongoDB 搜索索引。
以下代码展示了如何从集合中删除搜索索引:
collection.dropIndex("<index to delete>")
更多信息
要学习有关 MongoDB 搜索的更多信息,请参阅MongoDB 搜索索引文档。