Overview
Puede gestionar programáticamente sus Índices de búsqueda de MongoDB y búsqueda vectorial de MongoDB mediante el controlador de sincronización de Kotlin.
MongoDB Search le permite realizar búsquedas de texto completo en colecciones alojadas en MongoDB Atlas. Los índices de MongoDB Search especifican el comportamiento de la búsqueda y qué campos indexar.
MongoDB Vector Search te permite realizar búsquedas semánticas en incrustaciones vectoriales almacenadas en MongoDB Atlas. Los índices de Vector Search definen los índices para las incrustaciones vectoriales que deseas query y los valores booleanos, de fecha, objectId, numéricos, string o UUID que deseas usar para prefiltrar tus datos.
Puedes llamar a los siguientes métodos en una colección para gestionar tus índices de búsqueda y búsqueda vectorial de MongoDB:
createSearchIndex()(válido solo para índices de búsqueda de MongoDB)createSearchIndexes()listSearchIndexes()updateSearchIndex()dropSearchIndex()
Nota
Los métodos de gestión de índices MongoDB Search y Vector Search se ejecutan de forma asíncrona y podrían regresar antes de confirmar su correcta ejecución. Para determinar el estado actual de los índices, llame al listSearchIndexes() método o consulte la lista de índices en la interfaz de usuario de Atlas.
Las siguientes secciones proporcionan ejemplos de código que demuestran cómo utilizar cada uno de los métodos anteriores.
Crear un índice de búsqueda
Puede utilizar el método createSearchIndex() para crear un solo índice de búsqueda de MongoDB Search. No puedes usar este método para crear un índice de Búsqueda Vectorial.
Puedes usar el método createSearchIndexes() para crear múltiples índices MongoDB Search o Vector Search. Debes crear una instancia SearchIndexModel para cada índice, luego pasar una lista de instancias SearchIndexModel al método createSearchIndexes().
El siguiente ejemplo de código muestra cómo crear un índice de búsqueda de MongoDB:
val index = Document("mappings", Document("dynamic", true)) collection.createSearchIndex("mySearchIdx", index)
El siguiente ejemplo de código muestra cómo crear índices de Búsqueda de MongoDB y Búsqueda Vectorial en una sola llamada:
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) )
Para obtener más información sobre la sintaxis utilizada para definir los índices de MongoDB Search, consulta la guía Revisar la sintaxis del índice de MongoDB Search en la documentación de Atlas.
Índices de búsqueda de listas
Puedes utilizar el método listSearchIndexes() para devolver todos los índices de búsqueda de MongoDB Search en una colección.
El siguiente ejemplo de código muestra cómo imprimir una lista de los índices de búsqueda en una colección:
val results = collection.listSearchIndexes() results.forEach { result -> println(result) }
Actualizar un índice de búsqueda
Puedes utilizar el método updateSearchIndex() para actualizar un índice de Búsqueda de MongoDB.
El siguiente código muestra cómo actualizar un índice de búsqueda:
val newIndex = Document("mappings", Document("dynamic", true)) collection.updateSearchIndex("<index to update>", newIndex)
Eliminar un índice de búsqueda
Se puede usar el método dropSearchIndex() para borrar un índice de búsqueda de MongoDB Search.
El siguiente código muestra cómo eliminar un índice de búsqueda de una colección:
collection.dropIndex("<index to delete>")
Información Adicional
Para obtener más información sobre MongoDB Search, consulte la documentación de Índices de búsqueda de MongoDB.