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
- Create a Search Index with the Default Name
- Crie um índice de pesquisa vetorial
- Saiba mais
Definição
Novidade na versão 7.0: (Também disponível a partir da versão 6.0.7)
Creates an Atlas Search index or Vector Search index on a specified collection.
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 do banco de dados, consulte o comando createSearchIndexes
.
Para drivers de API do MongoDB, consulte a documentação do driver do MongoDB específica da linguagem.
Compatibilidade
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
Sintaxe do comando:
db.<collection>.createSearchIndex( <name>, <type>, { <definition> } )
Campos de comando
createSearchIndex()
usa estes campos:
Campo | Tipo | necessidade | Descrição |
---|---|---|---|
| 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 |
| string | Opcional | Tipo de índice de pesquisa para criar. Você pode especificar:
Se você omitir o campo |
| documento | Obrigatório | Documento que descreve o índice a ser criado. 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 |
---|---|---|---|
| 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. |
| string | Opcional | |
| objeto | Obrigatório | Especifica como indexar campos em caminhos diferentes para este índice. |
| 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 é |
| 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. |
| array | Opcional | Especifica os Analyzers customizados a serem usados neste índice. |
| 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. |
| 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. |
Sintaxe da definição do índice de Vector 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.
Comportamento
createSearchIndex()
triggers an index build. There may be a delay
between when you receive a response from the command and when the index
is ready.
Para ver o status dos seus índices de pesquisa, use o estágio de agregação $listSearchIndexes
.
Controle de acesso
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" } ] )
Exemplos
Criar um índice de pesquisa em Todos os Campos
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.
Crie um índice de pesquisa com um analisador de idiomas
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.
Create a Search Index with the Default Name
The following createSearchIndex()
method only specifies the index
definition and omits the index name. The command creates a search index
with the name default
on the food
collection:
db.food.createSearchIndex( { mappings: { fields: { title: { type: "string" } } } } )
Crie um índice de pesquisa vetorial
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" } ] } )
The vector search index contains one dimension and indexes the genre
field.