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

Crie índices de pesquisa

Nesta página

  • Definição
  • Sintaxe
  • Campos de comando
  • Sintaxe de definição do índice de pesquisar
  • Comportamento
  • Controle de acesso
  • Saída
  • Exemplos
  • Criar um índice de pesquisa em Todos os Campos
  • Crie um índice de pesquisa com um analisador de idiomas
  • Criar múltiplos índices de pesquisa
createSearchIndexes

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

Cria um ou mais índices do Atlas Search em uma collection especificada.

O mongosh método db.collection.createSearchIndex() fornece um wrapper em torno do createSearchIndexes comando de banco de dados .

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

Para saber mais, consulte Definir mapeamentos de sinônimos em seu índice do Atlas 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 } }
}
]
} )

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.

← Comandos do Banco de Dados de Pesquisa do Atlas