Menu Docs
Página inicial do Docs
/
Atlas
/ / /

Defina mapeamentos de campo

Ao criar um índice do Atlas Search , você pode especificar os campos para indexar utilizando os seguintes métodos:

  • Mapeamentos dinâmicos: Permite que o Atlas Search indexe automaticamente todos os campos de tipos suportados.

  • Mapeamentos estáticos: permitem especificar quais campos indexar.

Por padrão, o Atlas Search para de replicar alterações para índices maiores que 2.1 bilhões de objetos de índice, em um conjunto de réplicas ou único shard, onde cada documento indexado ou aninhado embeddedDocument conta como um único objeto. Isso significa que seu índice pode ser consultado, mas você pode obter resultados obsoletos.

Se você planeja indexar campos que podem exceder 2.1 bilhões de objetos, use numPartitions ou shard em seu cluster.

Você não pode indexar campos que contêm o sinal de dólar ($) no início do nome do campo.

Para utilizar mapeamentos dinâmicos, configure mappings.dynamic para true em sua definição de índice. Você também pode configurar campos individuais especificando o nome do campo, o tipo de dados e outras opções de configuração para cada campo que deseja configurar no mappings.fields. Você pode especificar os campos em qualquer ordem.

1{
2 "mappings": {
3 "dynamic": true,
4 "fields": { // Optional, use this to configure individual fields
5 "<field-name>": {
6 "type": "<field-type>",
7 ...
8 },
9 ...
10 }
11 }
12}

Para utilizar mapeamentos estáticos,mappings.dynamic false defina como e especifique o nome do campo , otipo de dados e outras opções de configuração para cada campo que você deseja indexar mappings.fields no. Você pode especificar os campos em qualquer ordem.

Se você omitir o campo mappings.dynamic, o padrão será false.

1{
2 "mappings": {
3 "dynamic": false, // Optional, if omitted defaults to "false"
4 "fields": {
5 "<field-name>": {
6 "type": "<field-type>",
7 ...
8 },
9 ...
10 }
11 }
12}

Você pode indexar um campo que contém dados polimórficos como vários tipos especificando uma array de definições de campo para o campo, um para cada tipo de dados .

Sintaxe
1{
2 "mappings": {
3 "dynamic": <boolean>,
4 "fields": {
5 "<field-name>": [
6 {
7 "type": "<field-type>",
8 ...
9 },
10 {
11 "type": "<field-type>",
12 ...
13 },
14 ...
15 ],
16 ...
17 },
18 ...
19 }
20}

Você pode utilizar mapeamentos estáticos e dinâmicos para especificar se a Pesquisa Atlas deve indexar automaticamente todos os campos dinamicamente indexáveis em sua coleta.

Use o mapeamento dinâmico para indexar automaticamente todos os campos dos tipos suportados em sua collection. Recomendamos usar mapeamentos dinâmicos somente se seu esquema mudar regularmente ou for desconhecido, ou se você estiver experimentando o Atlas Search. Os índices mapeados dinamicamente ocupam mais espaço em disco do que os índices mapeados estaticamente e podem ter menos desempenho.

Quando você indexa dinamicamente um campo que contém dados polimórficos, o Atlas Search indexa automaticamente o campo como todos os tipos de campo dinamicamente indexáveis que correspondem aos dados. Se o campo contiver dados de um tipo que o Atlas Search não indexa automaticamente, o Atlas Search não indexará estes dados.

O Atlas Search indexa dinamicamente todos os campos em um documento usando as configurações padrão para o tipo de dados detectado. O Atlas Search também indexa dinamicamente todos os documentos aninhados no documento, a menos que você substitua explicitamente definindo dynamic para false.

Para saber quais tipos de dados suportam indexação dinâmica, consulte a seção Tipos de Dados abaixo.

Use o mapeamento estático para configurar opções de índice para campos que você não deseja indexados dinamicamente ou para configurar um único campo independentemente de outros em um índice. Quando você utiliza mapeamento estático, o Atlas Search indexa somente os campos que você especifica no mappings.fields.

Quando você indexa estaticamente um campo que contém dados polimórficos, o Atlas Search indexa somente documentos que correspondem ao mapeamento especificado na definição de índice para esse campo. O Atlas Search não indexa documentos que não correspondam ao tipo de dados especificado na definição de índice para esse campo.

Para definir o índice para um campo aninhado, você deve definir os mapeamentos para cada campo pai daquele campo aninhado. Você não pode usar a notação de ponto para indexar estaticamente campos aninhados. Por exemplo, consulte os Exemplos ou Exemplo de mapeamento combinado abaixo.

O Atlas Search não suporta os seguintes tipos de dados BSON:

  • Decimal128

  • JavaScript code with scope

  • Tecla máxima

  • Min key

  • Expressão regular

  • Timestamp

O Atlas Search armazena automaticamente os campos do tipo string no mongot. Você pode armazenar campos de todos os tipos de dados suportados na Atlas Search usando a opção Definir campos de origem armazenados no seu índice do Atlas Search em sua definição de índice. Para saber mais sobre mongot e a arquitetura de nó do Atlas Search, consulte Opções de sistema do Atlas Search.

A tabela a seguir enumera os tipos de dados BSON compatíveis e os tipos de campo do Atlas Search que você pode usar para indexar ostipos de dados BSON . A tabela também indica se o tipo de campo do Atlas Search é incluído automaticamente em um índice do Atlas Search quando você habilita mapeamentos dinâmicos e lista os operadores e coletores que você pode usar para consultar o valor do campo.

Tipo de JSON
Tipo de campo do Atlas Search
Dinamicamente Indexado
operadores e coletores

Operadores que são compatíveis com o tipo de dados na array.

Boolean

Data

Data

Double

Double

Double

Inteiro de bits

Inteiro de bits

Inteiro de 64 bits

Inteiro de 64 bits

Zero

N/A

Objeto

Todos os operadores

Objeto

embeddedDocument (para array de objetos)

ObjectId

String

String

String

String

Algumas limitações se aplicam. Para saber mais, consulte Como indexar os elementos de uma array.

Para o tipo string, os operadores moreLikeThis e queryString não aceitam uma array de strings.

O Atlas Search não inclui um tipo de campo para indexar valores nulos porque o Atlas Search indexa automaticamente valores nulos para campos indexados estática e dinamicamente.

Obsoleto.

Observação

Você pode armazenar campos de todos os tipos de dados suportados no Atlas Search usando a opção storedSource.

Para indexar um campo como vários tipos, defina os tipos na array de definição de campo para campo.

Exemplo

O exemplo a seguir mostra a definição de campo para indexar um campo como tipos múltiplos.

1{
2 ...
3 "mappings": {
4 "dynamic": <boolean>,
5 "fields": {
6 "<field-name>": [
7 {
8 "type": "<field-type>",
9 ...
10 },
11 {
12 "type": "<field-type>",
13 ...
14 },
15 ...
16 ],
17 ...
18 },
19 ...
20 }
21}

O seguinte exemplo de definição de índice utiliza mapeamentos estáticos.

  • O analisador de índice padrão é lucene.standard.

  • O analisador de pesquisa padrão é lucene.standard. Você pode alterar o analisador de pesquisa se quiser que o termo de query seja analisado de forma diferente de como ele é armazenado no índice de Atlas Search.

  • O índice especifica mapeamentos de campo estáticos (dynamic: false), o que significa que campos que não são explicitamente mencionados não são indexados. Então, a definição do índice inclui:

    • O campo address, que é do tipo document. Possui dois subcampos incorporados, city e state.

      O subcampo city usa o analisador lucene.simple por padrão para queries. Utiliza a opção ignoreAbove para ignorar qualquer cadeia de mais de 255 bytes de comprimento.

      O subcampo state usa o analisador lucene.english por padrão para queries.

    • O campo company, que é do tipo string. Ele usa o analisador lucene.whitespace por padrão para queries. Tem um analisador multi denominado mySecondaryAnalyzer que utiliza o analisador lucene.french por padrão para queries.

    • O campo employees, que é uma array de strings. Ele utiliza o analisador lucene.standard por padrão para queries. Para indexar arrays, o Atlas Search exige somente o tipo de dados dos elementos de array. Você não precisa especificar que os dados estão contidos em uma matriz na definição de índice.

{
"analyzer": "lucene.standard",
"searchAnalyzer": "lucene.standard",
"mappings": {
"dynamic": false,
"fields": {
"address": {
"type": "document",
"fields": {
"city": {
"type": "string",
"analyzer": "lucene.simple",
"ignoreAbove": 255
},
"state": {
"type": "string",
"analyzer": "lucene.english"
}
}
},
"company": {
"type": "string",
"analyzer": "lucene.whitespace",
"multi": {
"mySecondaryAnalyzer": {
"type": "string",
"analyzer": "lucene.french"
}
}
},
"employees": {
"type": "string",
"analyzer": "lucene.standard"
}
}
}
}

O exemplo de definição de índice a seguir utiliza mapeamentos estáticos e dinâmicos.

  • O analisador de índice padrão é lucene.standard.

  • O analisador de pesquisa padrão é lucene.standard. Você pode alterar o analisador de pesquisa se quiser que o termo de query seja analisado de forma diferente de como ele é armazenado no índice de Atlas Search.

  • O índice especifica mapeamentos de campo estáticos (dynamic: false), o que significa que campos que não são explicitamente mencionados não são indexados. Então, a definição do índice inclui:

    • O campo company, que é do tipo string. Ele usa o analisador lucene.whitespace por padrão para queries. Tem um analisador multi denominado mySecondaryAnalyzer que utiliza o analisador lucene.french por padrão para queries.

    • O campo employees, que é um conjunto de cadeias de caracteres. Ele usa o analisador lucene.standard por padrão para consultas.

    • O campo address, que é do tipo document. Possui dois subcampos incorporados, city e state. Em vez de mencionar explicitamente cada campo aninhado no documento, a definição de índice permite o mapeamento dinâmico para todos os subcampos no documento. Ele usa o analisador lucene.standard por padrão para queries.

{
"analyzer": "lucene.standard",
"searchAnalyzer": "lucene.standard",
"mappings": {
"dynamic": false,
"fields": {
"company": {
"type": "string",
"analyzer": "lucene.whitespace",
"multi": {
"mySecondaryAnalyzer": {
"type": "string",
"analyzer": "lucene.french"
}
}
},
"employees": {
"type": "string",
"analyzer": "lucene.standard"
},
"address": {
"type": "document",
"dynamic": true
}
}
}
}

Voltar

Filtros de token

Nesta página