Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Índices de búsqueda de MongoDB

En esta guía, puede aprender a administrar programáticamente sus índices de MongoDB Search y MongoDB Vector Search utilizando la librería PHP.

La funcionalidad de búsqueda de MongoDB permite realizar búsquedas en texto completo en colecciones alojadas en MongoDB Atlas. Para obtener más información sobre MongoDB Search, consulte la MongoDB Search Overview.

La Búsqueda Vectorial de MongoDB permite realizar búsquedas semánticas en incrustaciones vectoriales almacenadas en MongoDB Atlas. Para obtener más información sobre la Búsqueda Vectorial de MongoDB, consulte la Descripción General de la Búsqueda Vectorial de MongoDB.

Puede utilizar los siguientes métodos en un MongoDB\Collection instancia para administrar sus índices MongoDB Search y MongoDB Vector Search:

  • MongoDB\Collection::createSearchIndex()

  • MongoDB\Collection::createSearchIndexes()

  • MongoDB\Collection::listSearchIndexes()

  • MongoDB\Collection::updateSearchIndex()

  • MongoDB\Collection::dropSearchIndex()

Nota

La gestión de MongoDB Search y MongoDB Vector Search Index es asíncrona

La biblioteca PHP de MongoDB gestiona los índices de MongoDB Search y MongoDB Vector Search de forma asíncrona. Los métodos de la librería descritos en las siguientes secciones devuelven la respuesta del servidor de inmediato, pero los cambios en sus indices de búsqueda se producen en segundo plano y pueden no completarse hasta más tarde.

Las siguientes secciones proporcionan ejemplos de código que demuestran cómo utilizar cada uno de los métodos anteriores.

Puedes utilizar el método createSearchIndex() para crear un único índice de Búsqueda MongoDB o de Búsqueda Vectorial MongoDB en una colección, o el método createSearchIndexes() para crear varios índices simultáneamente.

El siguiente ejemplo de código muestra cómo crear un único índice de MongoDB Search:

$searchIndexName = $collection->createSearchIndex(
['mappings' => ['dynamic' => true]],
['name' => 'mySearchIdx'],
);

El siguiente ejemplo de código muestra cómo crear un único índice de MongoDB Vector Search:

$vectorSearchIndexName = $collection->createSearchIndex(
[
'fields' => [[
'type' => 'vector',
'path' => 'plot_embedding',
'numDimensions' => 1536,
'similarity' => 'dotProduct',
]],
],
['name' => 'myVSidx', 'type' => 'vectorSearch'],
);

El siguiente ejemplo de código muestra cómo crear índices de Búsqueda de MongoDB y Búsqueda Vectorial en una sola llamada:

$indexNames = $collection->createSearchIndexes(
[
[
'name' => 'SearchIdx',
'definition' => ['mappings' => ['dynamic' => true]],
],
[
'name' => 'VSidx',
'type' => 'vectorSearch',
'definition' => [
'fields' => [[
'type' => 'vector',
'path' => 'plot_embedding',
'numDimensions' => 1536,
'similarity' => 'dotProduct',
]],
],
],
],
);

Después de crear índices de MongoDB Search o MongoDB Vector Search, puedes realizar los tipos de query correspondientes en tus documentos. Para obtener más información, consulta las siguientes guías:

  • guía Ejecutar una MongoDB Search query

  • Ejecutar una MongoDB Vector Search query guía

A partir de la 2.2 versión, la biblioteca PHP genera un MongoDB\Exception\SearchNotSupportedException error cuando la versión de su servidor MongoDB no admite los índices de búsqueda de MongoDB. Para gestionar los errores de incompatibilidad de versiones del servidor MongoDB, añada lógica de gestión de errores a su aplicación.

El siguiente ejemplo llama al método createSearchIndex() e imprime un mensaje de error si la creación del índice no se realiza correctamente debido a una versión incompatible del servidor MongoDB:

try {
$collection->createSearchIndex(
['mappings' => ['dynamic' => true]],
['name' => 'testSearchIdx'],
);
} catch (SearchNotSupportedException $exception) {
echo $exception->getMessage() . "\n";
}

Tip

Compatibilidad del servidor

Para aprender sobre las versiones requeridas del MongoDB Server para las funciones de búsqueda, consulta Compatibilidad y limitaciones de la MongoDB Search en la documentación de Atlas.

Puede utilizar el método listSearchIndexes() para devolver un arreglo de los índices de MongoDB Search y MongoDB Vector Search en una colección:

foreach ($collection->listSearchIndexes() as $indexInfo) {
echo json_encode($indexInfo), PHP_EOL;
}

Puedes utilizar el método updateSearchIndex() para actualizar un índice de MongoDB Search o de búsqueda vectorial de MongoDB. Puede utilizar este método para cambiar el nombre o la configuración de un índice existente.

El siguiente código muestra cómo actualizar un índice de búsqueda para usar un analizador simple en el campo title:

$collection->updateSearchIndex(
'mySearchIdx',
['mappings' => [
'dynamic' => false,
'fields' => [
'title' => [
'type' => 'string',
'analyzer' => 'lucene.simple',
],
],
]],
);

Puedes usar el método dropSearchIndex() para remover un índice de MongoDB Search o MongoDB Vector Search de una colección.

El siguiente código muestra cómo borrar el índice de búsqueda de MongoDB llamado mySearchIdx:

$collection->dropSearchIndex('mySearchIdx');

Para ver ejemplos ejecutables que demuestran cómo administrar índices, consulte Índices para la optimización de consultas.

Para ver tutoriales que explican cómo utilizar la función de búsqueda de MongoDB, consulte Introducción a la búsqueda de MongoDB en la documentación de Atlas.

Para obtener más información sobre cualquiera de los métodos mencionados en esta guía, consulta la siguiente documentación de la API:

Volver

Multikey Indexes

En esta página