Overview
Puede administrar programáticamente su Índices de búsqueda de MongoDB y búsqueda vectorial de MongoDB mediante el controlador de sincronización de Kotlin.
MongoDB Search 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 los campos que se indexan.
La Búsqueda Vectorial de MongoDB permite realizar búsquedas semánticas en incrustaciones vectoriales almacenadas en MongoDB Atlas. Los índices de Búsqueda Vectorial definen los índices de las incrustaciones vectoriales que se desean consultar y los valores booleanos, de fecha, objectId, numéricos, de cadena o UUID que se utilizan para prefiltrar los datos.
Puede llamar a los siguientes métodos en una colección para administrar sus índices de búsqueda vectorial y de búsqueda 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 usar el método createSearchIndex() para crear un único índice de búsqueda de MongoDB. No puede usar este método para crear un índice de búsqueda vectorial.
Puede usar el método createSearchIndexes() para crear varios índices de MongoDB Search o Vector Search. Debe crear una instancia de SearchIndexModel para cada índice y luego pasar una lista de SearchIndexModel instancias al createSearchIndexes() método.
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
Puede utilizar el método listSearchIndexes() para devolver todos los índices de búsqueda de MongoDB 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
Puede 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
Puede utilizar el método dropSearchIndex() para eliminar un índice de búsqueda de MongoDB.
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.