Atualizar índice de pesquisa
Nesta página
Definição
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 db.collection.updateSearchIndex()
fornece um wrapper para o updateSearchIndex
comando de banco de dados 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
Sintaxe do comando:
db.runCommand( { updateSearchIndex: "<collection name>", id: "<index Id>", name: "<index name>", definition: { /* search index definition fields */ } } )
Campos de comando
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 |
Você deve especificar o campo |
name | string | Condicional | Nome do índice a ser atualizado. Você deve especificar o campo |
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 |
Sintaxe de definição do índice de pesquisar
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 | |
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 Se definido como Se omitido, o padrão é |
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 | boolean ou definição de origem armazenada | 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
Se omitido, o padrão é 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. |
Comportamento
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
.
Controle de acesso
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" } ] )
Saída
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
.
Exemplo
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" ] } } } )