Skapa ett Atlas Search-index
Ni definierar en mappning för ett sökindex i Atlas-gränssnittet eller via API:t och förstår hur Lucene tokeniserar och lagrar fältvärden.
Skapa ett Atlas Search-index är en gratis lektion i MongoDB Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för MongoDB Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i MongoDB Academy innehåller totalt 4 lektioner.
Vad är Atlas Search?
Atlas Search är en fullständigt hanterad sökmotor baserad på Apache Lucene, inbäddad direkt i MongoDB Atlas. Till skillnad från MongoDB:s inbyggda textindex erbjuder Atlas Search relevanspoäng, fuzzy matching, autokomplettering, facetterad navigering och avancerade analysverktyg – allt tillgängligt via ett steg i en aggregeringspipeline som kallas $search. Ni behöver inte köra ett separat Elasticsearch- eller Solr-kluster; Atlas Search finns sida vid sida med Era data.
Så fungerar Atlas Search under huven
Atlas Search kör en Lucene-motor som en separat process bredvid varje MongoDB-nod. När dokument infogas, uppdateras eller tas bort strömmar MongoDB ändringarna asynkront till Lucene-indexet. Det innebär att Atlas Search-index är eventuellt konsekventa med MongoDB-data – det finns en kort fördröjning (vanligtvis millisekunder) mellan en skrivning och att den visas i sökresultaten. För de flesta applikationer är detta helt acceptabelt.
Skapa ett sökindex via Atlas-gränssnittet
I MongoDB Atlas-gränssnittet navigerar Ni till klustret, klickar på fliken Search och väljer Create Search Index. Ni kan använda Visual Editor (fältmappning med peka-och-klicka) eller JSON Editor för att skriva indexdefinitionen direkt. Indexet gäller för en specifik databas och collection. När Ni har klickat på Create bygger Atlas indexet asynkront – en grön statusindikator visar när det är klart att användas för frågor.
Standardmappningen för sökindex
Det enklaste Atlas Search-indexet använder dynamisk mappning: MongoDB indexerar automatiskt alla fält av typen sträng, tal, datum och booleskt värde utan att Ni behöver ange dem ett och ett. Standarddefinitionen för indexet är helt enkelt { mappings: { dynamic: true } }. Detta är det snabbaste sättet att komma igång och passar bra för utforskning. För produktionsarbetsbelastningar bör Ni byta till statiska mappningar för att styra vilka fält som indexeras och hur de analyseras.
// Default index definition — dynamic mapping
// All string, number, date, boolean fields are indexed automatically
{
'mappings': {
'dynamic': true
}
}
// This is what you paste into the Atlas JSON Editor when creating the indexStatisk mappning: styrning av fältindexering
Statisk mappning ger Er uttrycklig kontroll över vilka fält som indexeras och hur de analyseras. Ange dynamic: false och lista varje fält med dess typ och analysverktyg. Fält som inte finns med i en statisk mappning indexeras inte. Detta minskar indexets storlek och förbättrar indexeringens genomströmning för stora collections genom att onödig indexering av varje fält undviks.
// Static mapping: only index 'title' and 'description' as searchable strings
{
'mappings': {
'dynamic': false,
'fields': {
'title': {
'type': 'string',
'analyzer': 'lucene.standard'
},
'description': {
'type': 'string',
'analyzer': 'lucene.standard'
},
'category': {
'type': 'stringFacet' // for faceted navigation
},
'price': {
'type': 'number'
}
}
}
}Analysverktyg: så tokeniseras text
Ett analysverktyg definierar hur text delas upp i token och normaliseras innan den lagras i Lucene-indexet. lucene.standard omvandlar text till gemener och delar upp den vid blanksteg och skiljetecken. lucene.english tillämpar dessutom stemming (minskar 'running' till 'run') för bättre täckning. lucene.keyword behandlar hela strängen som en enda token, vilket är användbart för fält som ska matcha exakt, till exempel e-postadresser eller SKU-koder. Valet av analysverktyg påverkar sökkvaliteten betydligt.
{
'mappings': {
'dynamic': false,
'fields': {
// 'Standard' analyzer: good for general text
'title': { 'type': 'string', 'analyzer': 'lucene.standard' },
// 'English' analyzer: stemming for better recall
'description': { 'type': 'string', 'analyzer': 'lucene.english' },
// 'Keyword' analyzer: exact match only
'sku': { 'type': 'string', 'analyzer': 'lucene.keyword' },
// Multi-analyzer: both standard and keyword on same field
'email': {
'type': 'string',
'analyzer': 'lucene.keyword',
'multi': {
'standard': { 'type': 'string', 'analyzer': 'lucene.standard' }
}
}
}
}
}Skapa ett sökindex via Atlas CLI
För infrastruktur som kod och CI/CD-pipelines kan Ni skapa Atlas Search-index med Atlas CLI eller Atlas Administration API. Då kan Ni versionshantera sökindexdefinitionerna tillsammans med applikationskoden. Atlas CLI-kommandot är atlas clusters search indexes create med en JSON-konfigurationsfil.
# Create a search index using the Atlas CLI
# 1. Save index definition to a file:
# cat search-index.json
# { "name": "products_search", "collectionName": "products",
# "database": "shop", "mappings": { "dynamic": true } }
# 2. Create the index:
# atlas clusters search indexes create \
# --clusterName MyCluster \
# --file search-index.json \
# --projectId <YOUR_PROJECT_ID>Indexstatus och övervakning
När ett sökindex har skapats går det igenom tillståndet BUILDING medan Lucene bearbetar befintliga dokument. Under denna tid kan frågor returnera ofullständiga resultat eller misslyckas med ett fel. När statusen visar READY (grönt i Atlas-gränssnittet) omfattar indexet alla befintliga dokument. Nya dokument som läggs till efter att indexet skapats indexeras med en kort fördröjning. Övervaka indexstatus programmatiskt med Atlas Administration API eller Atlas CLI.
// Check index status via Atlas Admin API
// GET https://cloud.mongodb.com/api/atlas/v1.0/groups/{groupId}/clusters/{clusterName}/fts/indexes/{collectionName}
// In application code, handle the case where the index is still building:
// - Catch errors with code 1261 (IndexNotFound)
// - Retry after a delay or show a 'search unavailable' messageIndexering av kapslade fält och arrayfält
Atlas Search kan indexera fält i kapslade dokument och arrayelement. Använd punktnotation i fältsökvägen för att referera till kapslade fält, precis som i vanliga MongoDB-frågor. I arrayer med underdokument indexeras varje element separat. Detta gör att Ni kan söka i inbäddade objekt – till exempel hitta produkter där något färgalternativ matchar en sökterm.
// Index definition for a product with nested fields and arrays
{
'mappings': {
'dynamic': false,
'fields': {
'name': { 'type': 'string', 'analyzer': 'lucene.standard' },
'variants.color': { 'type': 'string', 'analyzer': 'lucene.keyword' },
'variants.size': { 'type': 'string', 'analyzer': 'lucene.keyword' },
'reviews.text': { 'type': 'string', 'analyzer': 'lucene.english' },
'reviews.rating': { 'type': 'number' }
}
}
}Verifiera indexet med $search
När Atlas Search-indexet har statusen READY testar Ni det med ett $search-steg i en aggregeringspipeline. Den enklaste frågan använder operatorn text för att söka efter ett nyckelord i alla indexerade strängfält. Ett lyckat svar bekräftar att indexet har byggts och att frågor fungerar. Granska searchScore i det projicerade resultatet för att förstå relevansrankningen.
// Quick verification query
db.products.aggregate([
{
$search: {
index: 'default', // name of your search index
text: {
query: 'wireless headphones',
path: { wildcard: '*' } // search all indexed fields
}
}
},
{
$project: {
name: 1,
category: 1,
price: 1,
score: { $meta: 'searchScore' }
}
},
{ $limit: 5 }
])Namngivning av index och flera index
Ni kan skapa flera Atlas Search-index för samma collection, vart och ett med ett annat namn, en annan fältkonfiguration och andra analysverktyg. Det gör att olika användningsområden kan använda specialiserade index – ett allmänt sökindex med dynamisk mappning, ett index för strikt matchning med keyword-analysverktyg och ett autokompletteringsindex. När Ni kör en $search-fråga anger Ni fältet index för att välja vilket sökindex som ska användas.
// Using a named search index in a $search query
db.products.aggregate([
{
$search: {
index: 'products_autocomplete', // use the autocomplete-specific index
autocomplete: {
query: 'wire',
path: 'name'
}
}
}
]);Snabbkontroll
Testa Er förståelse av begreppen MongoDB & NoSQL Databases från den här lektionen.
Lektionssammanfattning
I den här lektionen har Ni lärt Er att Atlas Search är en Lucene-baserad fulltextsökmotor inbäddad i MongoDB Atlas, att dynamisk mappning indexerar alla fält automatiskt medan statisk mappning kräver uttryckliga fältdefinitioner för mer detaljerad kontroll och att analysverktyg som lucene.standard, lucene.english och lucene.keyword styr hur text tokeniseras och lagras. Nästa steg är att skriva $search-aggregeringsfrågor med operatorerna text, phrase och wildcard.
Lär dig JavaScript med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Skapa ett Atlas Search-index” gratis?
Ja – hela texten till ”Skapa ett Atlas Search-index” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i MongoDB Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i MongoDB Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Skapa ett Atlas Search-index”?
Ni definierar en mappning för ett sökindex i Atlas-gränssnittet eller via API:t och förstår hur Lucene tokeniserar och lagrar fältvärden. Ni övar på MongoDB Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig MongoDB Academy?
Du behöver inga förkunskaper. Utbildningen i MongoDB Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Skapa ett Atlas Search-index”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här MongoDB Academy-lektionen?
Ja. Varje MongoDB Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Skapa ett Atlas Search-index
- Skriva $search-frågor: text, fras och wildcard
- Autocomplete och fuzzy-matchning
- Facetter och sammansatta frågor