Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Atualizar índice 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
  • Exemplo
updateSearchIndex

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

Atualiza um índice existente do Atlas Search.

O mongosh método fornece um wrapper em torno db.collection.updateSearchIndex() do updateSearchIndex 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(
{
updateSearchIndex: "<collection name>",
id: "<index Id>",
name: "<index name>",
definition: {
/* search index definition fields */
}
}
)

O comando updateSearchIndex usa os seguintes campos:

Campo
Tipo
necessidade
Descrição
updateSearchIndex
string
Obrigatório
Nome da collection que contém o índice a ser atualizado.
id
string
Condicional

id do índice a ser atualizado.

Você deve especificar o campo id ou name .

name
string
Condicional

Nome do índice a ser atualizado.

Você deve especificar o campo id ou name .

definition
documento
Obrigatório

Documento que descreve a definição do índice de pesquisa atualizado. A definição especificada substitui a definição anterior no índice de pesquisa.

Para obter detalhes sobre a sintaxe definition , consulte Sintaxe de definição do índice de pesquisa.

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 updateSearchIndex aciona uma construção de índice com a nova definiçã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 atualizado está pronto.

A definição de índice antiga ainda pode suportar query enquanto o novo índice está sendo criado. Depois que o novo índice terminar de ser criado, o índice antigo não poderá mais ser usado. 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 updateSearchIndex deverá ter a ação de privilégio do updateSearchIndex no reconhecimento de data center ou collection:

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

Os papéis embutidos readWrite e restore fornecem o privilégio do updateSearchIndex . O exemplo a seguir concede a role readWrite no reconhecimento de data center qa :

db.grantRolesToUser(
"<user>",
[ { role: "readWrite", db: "qa" } ]
)

Um comando updateSearchIndex bem-sucedido retorna o seguinte:

{
ok: 1
}

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 o índice atualizado está pronto e substitui o índice original.

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

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

db.runCommand( {
updateSearchIndex: "contacts",
name: "searchIndex01",
definition:
{
mappings: { dynamic: true },
storedSource: {
exclude: [ "directors", "imdb.rating" ]
}
}
} )
← Índice de queda de pesquisa