Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

db.collection.createSearchIndex()

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Campos de comando
  • Sintaxe de definição do índice de pesquisar
  • Sintaxe da definição do índice de Vector Search
  • Comportamento
  • Controle de acesso
  • Exemplos
  • Criar um índice de pesquisa em Todos os Campos
  • Crie um índice de pesquisa com um analisador de idiomas
  • Crie um índice de pesquisa com o nome padrão
  • Crie um índice de pesquisa vetorial
  • Saiba mais
db.collection.createSearchIndex()

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

Cria um índice do Atlas Search ou um índice Vector Search em uma collection 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 clusters M0 ou 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 dados na 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 seu índice do Atlas Search.

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 do Atlas Search.

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