Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

createSearchIndexes (comando de banco de dados)

createSearchIndexes

Novidade na versão 7.0: (Também disponível a partir da versão 6.0.7)

Cria um ou mais índices de pesquisa MongoDB ou índices de Vector Search em uma coleção ou visualização especificada.

O mongosh método fornece um wrapper em torno db.collection.createSearchIndex() do createSearchIndexes reconhecimento de data center .

Observação

Além do MongoDB Atlas, este comando está disponível nas seguintes implementações autogerenciadas:

Para saber mais,consulte MongoDB Search em implementações autogerenciadas.

Sintaxe do comando:

db.runCommand(
{
createSearchIndexes: "<collection name>",
indexes: [
{
name: "<index name>",
type: "<search index type>",
definition: {
/* search index definition fields */
}
},
...
]
}
)

O comando createSearchIndexes usa os seguintes campos:

Campo
Tipo
necessidade
Descrição

createSearchIndexes

string

Obrigatório

Nome da collection na qual criar o índice de pesquisa.

indexes

array

Obrigatório

Array de documentos que descrevem os índices a serem criados.

indexes.name

string

Opcional

Nome do índice de pesquisa a ser criado.

Você não pode criar vários índices com o mesmo nome em uma única collection.

Se você não especificar um name, o índice será denominado default.

indexes.type

string

Opcional

Tipo de índice de pesquisa para criar. Você pode especificar:

  • search

  • vectorSearch

Se você omitir o campo type , o tipo de índice será search.

indexes.definition

documento

Obrigatório

Documento que descreve o índice a ser criado. A sintaxe definition depende se você cria um índice de índice de pesquisa de Vector Search . Para a sintaxe definition , consulte:

A definição do índice de pesquisa utiliza os seguintes campos:

{
analyzer: "<analyzer-for-index>",
searchAnalyzer: "<analyzer-for-query>",
mappings: {
dynamic: <boolean>,
fields: { <field-definition> }
},
analyzers: [ <custom-analyzer> ],
storedSource: <boolean> | {
<stored-source-definition>
},
synonyms: [ {
name: "<synonym-mapping-name>",
source: {
collection: "<source-collection-name>"
},
analyzer: "<synonym-mapping-analyzer>"
} ]
}
Campo
Tipo
necessidade
Descrição

analyzer

string

Opcional

Especifica o analyzer para aplicar aos campos da string ao indexar.

Se você omitir este campo, o índice utilizará o analisador padrão.

searchAnalyzer

string

Opcional

Especifica o analyzer a ser aplicado ao texto de query antes que o texto seja pesquisado.

Se você omitir este campo, o índice utilizará o mesmo analisador especificado no campo analyzer .

Se você omitir os campos searchAnalyzer e analyzer , o índice utilizará o padrão .

mappings

objeto

Obrigatório

Especifica como indexar campos em caminhos diferentes para este índice.

mappings.dynamic

booleano

Opcional

Habilita ou desabilita o mapeamento de campo dinâmico para este índice.

If set to true, the index contains all fields containing supported data types.

Se definido como false, você deve especificar campos individuais para indexar usando mappings.fields.

Se omitido, o padrão é false.

mappings.fields

documento

Condicional

Necessário apenas se o mapeamento dinâmico estiver desabilitado.

Specifies the fields to index. To learn more, see Define Field Mappings for a MongoDB Search Index.

analyzers

array

Opcional

Especifica os Analyzers customizados a serem usados neste índice.

storedSource

Opcional

Specifies document fields to store for queries performed using the returnedStoredSource option.

You can store fields of all MongoDB Search Field Types on MongoDB Search. The storedSource value can be one of these:

  • true, para armazenar todos os campos

  • false, para não armazenar nenhum campo

  • An object that specifies the fields to include or exclude from storage

Se omitido, o padrão é false.

Para saber mais, consulte Definir campos de origem armazenados no índice de pesquisa do MongoDB.

synonyms

Opcional

Especifica mapeamentos de sinônimos para usar em seu índice. A configuração de sinônimos permite indexar e pesquisar palavras que tenham o mesmo significado ou semelhante.

Para saber mais, consulte Definir mapeamentos de sinônimos em seu índice de pesquisa do MongoDB.

A definição do índice de pesquisa vetorial usa os seguintes campos:

{
"fields": [
{
"type": "vector" | "filter",
"path": "<field-to-index>",
"numDimensions": <number-of-dimensions>,
"similarity": "euclidean" | "cosine" | "dotProduct"
}
]
}

Para obter explicações sobre os campos de definição de índice de pesquisa , consulte Como indexar campos para o Vector Search.

O comando createSearchIndexes Atlas Triggers uma construção de índice. Pode haver um atraso entre o momento em que você recebe uma resposta do comando e o momento em que o índice está pronto.

Para ver o status dos seus índices de pesquisa, use o estágio de agregação $listSearchIndexes .

Se a sua implementação impor o controle de acesso, o usuário executando o comando createSearchIndexes deverá ter a ação de privilégio do createSearchIndexes no reconhecimento de data center ou collection:

{
resource: {
db : <database>,
collection: <collection>
},
actions: [ "createSearchIndexes" ]
}

O role readWrite integrado fornece o privilégio createSearchIndexes . O exemplo a seguir concede a accountUser01 a função readWrite no reconhecimento de data center products :

db.grantRolesToUser(
"accountUser01",
[ { role: "readWrite", db: "products" } ]
)

A saída do comando createSearchIndexes se assemelha ao seguinte:

{
ok: 1,
indexesCreated: [
{
id: "<index Id>",
name: "<index name>"
}
]
}

Importante

O campo de resposta ok: 1 indica que o comando foi bem-sucedido. No entanto, pode haver um atraso entre o momento em que você recebe a resposta e o momento em que os índices criados estão prontos para uso.

Para ver o status dos seus índices de pesquisa, use o estágio de agregação $listSearchIndexes .

O exemplo seguinte cria um índice de pesquisa denominado searchIndex01 na collection contacts :

db.runCommand( {
createSearchIndexes: "contacts",
indexes: [
{
name: "searchIndex01",
definition: { mappings: { dynamic: true } }
}
]
} )

The index definition specifies mappings: { dynamic: true }, which means that the index contains all fields in the collection that have supported data types.

Um analisador de linguagem introduz palavras vazias, que são palavras que não são significativas o suficiente para serem indexadas.

O exemplo seguinte cria um índice de pesquisa denominado frenchIndex01 na collection cars e especifica o analisador lucene.french no campo fr :

db.runCommand( {
createSearchIndexes: "cars",
indexes: [
{
name: "frenchIndex01",
definition: {
mappings: {
fields: {
subject: {
fields: {
fr: {
analyzer: "lucene.french",
type: "string"
}
},
type: "document"
}
}
}
}
}
]
} )

Para saber mais sobre analisadores de idioma, consulte Analisadores de idioma.

O seguinte comando cria dois índices de pesquisa na coleção products , searchIndex02 e searchIndex03 :

db.runCommand( {
createSearchIndexes: "products",
indexes: [
{
name: "searchIndex02",
definition: {
mappings: {
fields: {
title: {
type: "string",
analyzer: "lucene.simple"
}
}
}
}
},
{
name: "searchIndex03",
definition:
{
mappings: { dynamic: true }
}
}
]
} )

searchIndex02 uses a simple analyzer on the title field. The simple analyzer divides text into searchable terms based on non-letter characters, such as whitespace, punctuation, or digits.

searchIndex03 uses a dynamic field mapping, meaning the index contains all fields in the collection that have supported data types.

O exemplo seguinte cria um índice vetorial do Atlas Search denominado vectorSearchIndex01 na collection movies:

db.runCommand( {
createSearchIndexes: "movies",
indexes: [
{
name: "vectorSearchIndex01",
type: "vectorSearch",
definition: {
fields: [
{
type: "vector",
numDimensions: 1,
path: "genre",
similarity: "cosine"
}
]
}
}
]
} )

O índice vetorial do Atlas Search contém uma dimensão e indexa o campo genre.