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.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
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 Atlas Search indexes em uma coleção especificada.

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

Importante

Esse comando só pode ser executado em uma implantação hospedada no MongoDB Atlas e requer uma camada do cluster Atlas de pelo menos M10.

Sintaxe do comando:

db.runCommand(
{
createSearchIndexes: "<collection name>",
indexes: [
{
name: "<index name>",
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.definition

documento

Obrigatório

Documento que descreve o índice a ser criado. Para obter detalhes sobre a sintaxe definition, consulte Sintaxe de definição do índiceAtlas Search .

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.

Se configurado para true, o índice contém todos os campos contendo tipos de dados suportados.

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.

Especifica os campos para indexar. Para saber mais, consulte Definir mapeamentos de campo para um índice de pesquisa do MongoDB.

analyzers

array

Opcional

Especifica os Analyzers customizados a serem usados neste índice.

storedSource

Opcional

Especifica os campos de documento a serem armazenados para queries realizadas usando a opção returnedStoredSource .

Você pode armazenar campos de todos os tipos de campo de pesquisa do MongoDB no Atlas Search. O valor storedSource pode ser um destes:

  • true, para armazenar todos os campos

  • false, para não armazenar nenhum campo

  • Um objeto que especifica os campos de include ou exclude a partir do armazenamento

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 um significado semelhante.

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

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 } }
}
]
} )

A definição do índice especifica mappings: { dynamic: true }, o que significa que o índice contém todos os campos na collection que suportaram tipos de dados.

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 utiliza um analisador simples no campo title . O analisador simples divide o texto em termos pesquisáveis com base em caracteres não letras, como espaço em branco, pontuação ou dígitos.

searchIndex03 usa um mapeamento de campo dinâmico, o que significa que o índice contém todos os campos na coleção que suportaram tipos de dados.