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

Configurar partição de índice

Para indexação, o MongoDB Search conta cada documento como um único objeto de índice quando não está aninhado dentro de outro documento. Para documentos incorporados, o MongoDB Search conta cada documento incorporado como objetos de índice adicionais, dependendo do número de níveis de aninhamento. O MongoDB Search para de replicar alterações para índices maiores que 2,100,000,000 objetos de índice.

Se você distribuiu a pesquisa do MongoDB em nós de pesquisa separados, poderá aumentar o número de objetos de índice do MongoDB Search particionamento seu índice. Por padrão, o MongoDB Search suporta uma partição por fragmento. Cada partição suporta até 2 bilhões de objetos de índice. Você pode criar um índice com até quatro (4) partições utilizando a opção numPartitions. Essas partições representam um único índice com suporte para até 8documentos B por cluster ou shard.

Quando você configura partições para seu índice, o MongoDB Search distribui automaticamente os objetos de índice entre as partições de maneira ideal. Quando você executa consultas em uma coleção com partições de índice, o MongoDB Search dispersa as consultas em todas as partições e reúne os resultados da pesquisa e metadados para classificar, mesclar e retornar os resultados.

Recomendamos o particionamento do seu índice quando:

  • Seus objetos de índice atingem 50% do limite total.

  • O número de documentos em sua coleção chega a dois bilhões.

  • Seu índice conterá até oito bilhões de documentos.

  • Seu índice está no estado STALE porque o MongoDB Search interrompeu a replicação.

Quando você configura partições ou modifica o número de partições, o MongoDB Search aciona uma reconstrução do seu índice.

Se você tiver mais de uma partição em seu cluster, não poderá remover todos os nós de pesquisa e migrar para um modelo de sistema em que os processos mongod e mongot são executados no mesmo nó.

1{
2 "numPartitions": <integer>
3}

A opção MongoDB Search numPartitions obtém os seguintes valores:

  • 1 - para criar um único índice, sem partições adicionais. Este é o valor padrão.

  • 2 - para criar até duas partições para até quatro bilhões de documentos.

  • 4 - para criar até quatro partições para até oito bilhões de documentos.

O exemplo de índice seguinte utiliza a collection sample_mflix.movies para demonstrar como configurar até 4 partições para os dados na collection. Você pode usar o Editor Visual ou o Editor JSON na UI do Atlas e outros clientes compatíveis para criar o índice.


➤ Use o menu suspenso Selecione a linguagem para definir o cliente do exemplo nesta seção.


curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--include \
--request POST "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/clusters/{clusterName}/search/indexes" \
--data '
{
"collectionName": "movies",
"database": "sample_mflix",
"name": "partitioned_index",
"type": "search",
"definition": {
"analyzer": "lucene.standard",
"mappings": {
"dynamic": true,
},
"numPartitions": 4,
"searchAnalyzer": "lucene.standard"
}
}'
  1. Crie um arquivo chamado indexDef.json semelhante ao seguinte:

    {
    "collectionName": "movies",
    "database": "sample_mflix",
    "definition": {
    "mappings": {
    "dynamic": true
    },
    },
    "name": "partitioned_index",
    "numPartitions": 4
    }
  2. Execute o seguinte comando para criar o índice.

    atlas deployments search indexes create --file indexDef.json
1

Você pode acessar a página de pesquisa do MongoDB a partir da opção Search & Vector Search ou do Data Explorer.

2
3

Faça as seguintes seleções na página e clique em Next.

Search Type

Selecione o tipo de índice MongoDB Search.

Index Name and Data Source

Especifique as seguintes informações:

  • Index Name: partitioned_index

  • Database and Collection:

    • sample_mflix database

    • movies collection

Configuration Method

For a guided experience, select Visual Editor.

To edit the raw index definition, select JSON Editor.

IMPORTANTE:

Seu índice do MongoDB Search é denominado default por padrão. Se você manter esse nome, seu índice será o índice de pesquisa padrão para qualquer consulta do MongoDB Search que não especifique uma opção index diferente em seus operadores. Se você estiver criando vários índices, recomendamos que mantenha uma convenção de nomenclatura descritiva consistente em seus índices.

4
  1. Clique em Refine Your Index.

  2. Alterne Index Partitions para habilitá-lo.

  3. Selecione 4 no menu suspenso Number of partitions e clique em Save Changes.

  1. Substitua a definição de índice padrão pelo seguinte:

    {
    "mappings": {
    "dynamic": true
    },
    "numPartitions": 4
    }
  2. Clique em Next.

5

O Atlas exibe um aviso breve e não interativo para informar que seu índice está sendo construído.

6

O índice recém-criado aparece na aba Atlas Search. Enquanto o índice está construindo, o campo StatusBuild in Progress. Quando o índice terminar de construir, o campo StatusActive.

IMPORTANTE: collections maiores demoram mais tempo para indexar. Você receberá uma notificação por e-mail quando seu índice terminar a criação.

db.movies.createSearchIndex(
"search-index",
{ mappings: { dynamic: true }, "numPartitions": 4 }
)
using MongoDB.Bson;
using MongoDB.Driver;
// connect to your Atlas deployment
var uri = "<connection-string>";
var client = new MongoClient(uri);
var db = client.GetDatabase("sample_mflix");
var collection = db.GetCollection<BsonDocument>("movies");
// define your MongoDB Search index
var index = new BsonDocument
{
{ "mappings", new BsonDocument
{
{ "dynamic", true }
}
},
{ "numPartitions", 4 }
};
var result = collection.SearchIndexes.CreateOne(index, "partitioned_index");
Console.WriteLine(result);
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
public class CreateIndex {
public static void main(String[] args) {
// connect to your Atlas cluster
String uri = "<connection-string>";
try (MongoClient mongoClient = MongoClients.create(uri)) {
// set namespace
MongoDatabase database = mongoClient.getDatabase("sample_mflix");
MongoCollection<Document> collection = database.getCollection("movies");
Document index = new Document()
.append("mappings", new Document()
.append("dynamic", true)
)
.append("numPartitions", 4);
collection.createSearchIndex("partitioned_index", index);
}
}
}
import { MongoClient } from "mongodb";
// connect to your Atlas deployment
const uri = "<connection-string>";
const client = new MongoClient(uri);
async function run() {
try {
const database = client.db("sample_mflix");
const collection = database.collection("movies");
// define your MongoDB Search index
const index = {
name: "partitioned_index",
definition: {
/* search index definition fields */
"mappings": {
"dynamic": true
},
"numPartitions": 4
}
}
// run the helper method
const result = await collection.createSearchIndex(index);
console.log(result);
} finally {
await client.close();
}
}
run().catch(console.dir);
from pymongo.mongo_client import MongoClient
from pymongo.operations import SearchIndexModel
def create_index():
# Connect to your Atlas deployment
uri = "<connectionString>"
client = MongoClient(uri)
# Access your database and collection
database = client["sample_mflix"]
collection = database["movies"]
# Create your index model, then create the search index
search_index_model = SearchIndexModel(
definition={
"mappings": {
"dynamic": True
},
"numPartitions": 4
},
name="partitioned_index",
)
result = collection.create_search_index(model=search_index_model)
print(result)

Voltar

Mapeamentos de sinônimos

Nesta página