Menu Docs
Página inicial do Docs
/
Manual do banco de dados
/ / /

db.collection.createSearchIndex() (método mongosh)

db.collection.createSearchIndex()

Novidade na versão 7.0: (Disponível também a partir de 6.0.7)

Cria um índice do MongoDB Search ou um índice do Vector Search em uma collection ou visualização especificada.

Importante

Método mongosh

Esta página documenta um método mongosh. Esta não é a documentação para comandos de banco de dados nem drivers específicos de linguagem, como Node.js.

Para o comando de banco de dados de dados, consulte o comando createSearchIndexes.

Para drivers de API do MongoDB, consulte a documentação do driver do MongoDB específica da linguagem.

Esse método está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem

Importante

Este comando não é suportado em instâncias sem servidor. Para obter mais informações, consulte Comandos não suportados.

Sintaxe do comando:

db.<collection>.createSearchIndex(
<name>,
<type>,
{
<definition>
}
)

createSearchIndex() usa estes campos:

Campo
Tipo
necessidade
Descrição

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.

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.

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.

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 no índice. Para saber mais, consulte Como definir mapeamentos de campo.

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 do MongoDB Search no MongoDB Search. O storedSource valor 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 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.

createSearchIndex() 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 sua implantação impor controle de acesso, o usuário que executa createSearchIndex() deverá ter a ação de privilégio createSearchIndexes no banco de dados ou na coleção:

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

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

db.movies.createSearchIndex(
"searchIndex01",
{ 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.cars.createSearchIndex(
"frenchIndex01",
{
mappings: {
fields: {
subject: {
fields: {
fr: {
analyzer: "lucene.french",
type: "string"
}
},
type: "document"
}
}
}
}
)

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

O método createSearchIndex() a seguir especifica apenas a definição do índice e omite o nome do índice. O comando cria um índice de pesquisa com o nome default na collection food :

db.food.createSearchIndex(
{
mappings: {
fields: {
title: {
type: "string"
}
}
}
}
)

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

db.movies.createSearchIndex(
"vectorSearchIndex01",
"vectorSearch",
{
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.

Voltar

Índice de Pesquisa do Atlas

Nesta página