Einen Atlas-Search-Index erstellen
Sie definieren ein Mapping für einen Suchindex in der Atlas-Oberfläche oder über die API und verstehen, wie Lucene Feldwerte tokenisiert und speichert.
Einen Atlas-Search-Index erstellen ist eine kostenlose MongoDB Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des MongoDB Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der MongoDB Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist Atlas Search?
Atlas Search ist eine vollständig verwaltete, auf Apache Lucene basierende Suchmaschine, die direkt in MongoDB Atlas eingebettet ist. Im Gegensatz zu den nativen Textindizes von MongoDB bietet Atlas Search Relevanzbewertung, Fuzzy Matching, Autovervollständigung, facettierte Navigation und ausgefeilte Analyzer – all dies ist über eine Aggregations-Pipeline-Stufe namens $search zugänglich. Sie müssen keinen separaten Elasticsearch- oder Solr-Cluster betreiben; Atlas Search befindet sich neben Ihren Daten.
Funktionsweise von Atlas Search im Hintergrund
Atlas Search führt eine Lucene-Engine als separaten Prozess neben jedem MongoDB-Knoten aus. Wenn Dokumente eingefügt, aktualisiert oder gelöscht werden, überträgt MongoDB die Änderungen asynchron an den Lucene-Index. Daher sind Atlas-Search-Indizes mit den MongoDB-Daten eventually consistent – zwischen einem Schreibvorgang und dem Erscheinen in den Suchergebnissen vergeht eine kurze Verzögerung (typischerweise Millisekunden). Für die meisten Anwendungen ist das völlig akzeptabel.
Erstellen eines Suchindex über die Atlas-Benutzeroberfläche
Öffnen Sie in der MongoDB-Atlas-Benutzeroberfläche Ihren Cluster, klicken Sie auf die Registerkarte Search und wählen Sie Create Search Index. Sie können den Visual Editor (Zuordnung von Feldern per Mausklick) oder den JSON Editor verwenden, um die Indexdefinition direkt zu verfassen. Der Index gilt für eine bestimmte Datenbank und Collection. Nach dem Klick auf Create erstellt Atlas den Index asynchron – eine grüne Statusanzeige signalisiert, sobald er für Abfragen bereit ist.
Die standardmäßige Zuordnung des Suchindex
Der einfachste Atlas-Search-Index verwendet dynamisches Mapping: MongoDB indiziert automatisch alle Felder vom Typ String, Zahl, Datum und Boolean, ohne dass Sie sie einzeln angeben müssen. Die Standarddefinition des Index lautet lediglich { mappings: { dynamic: true } }. Dies ist der schnellste Einstieg und eignet sich zur Erkundung. Für Workloads im Produktionseinsatz sollten Sie auf statische Mappings umstellen, um zu steuern, welche Felder indiziert und wie sie analysiert werden.
// 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 indexStatisches Mapping: Indizierung von Feldern steuern
Statisches Mapping gibt Ihnen genaue Kontrolle darüber, welche Felder indiziert und wie sie analysiert werden. Setzen Sie dynamic: false und listen Sie jedes Feld mit seinem Typ und Analyzer auf. Felder, die in einem statischen Mapping nicht aufgeführt sind, werden nicht indiziert. Dadurch verringert sich die Indexgröße und der Durchsatz bei der Indizierung großer Collections steigt, da die unnötige Indizierung jedes Feldes vermieden wird.
// 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'
}
}
}
}Analyzer: So wird Text in Tokens zerlegt
Ein Analyzer legt fest, wie Text vor der Speicherung im Lucene-Index in Tokens zerlegt und normalisiert wird. lucene.standard schreibt Text in Kleinbuchstaben um und trennt ihn an Leerzeichen und Satzzeichen. lucene.english wendet zusätzlich Stemming an (reduziert „running“ auf „run“), um einen besseren Recall zu erzielen. lucene.keyword behandelt die gesamte Zeichenfolge als einzelnes Token, was für Felder mit exakter Übereinstimmung wie E-Mail-Adressen oder SKU-Codes nützlich ist. Die Wahl des Analyzers beeinflusst die Suchqualität erheblich.
{
'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' }
}
}
}
}
}Erstellen eines Suchindex über die Atlas CLI
Für Infrastructure as Code und CI/CD-Pipelines können Sie Atlas-Search-Indizes über die Atlas CLI oder die Atlas Administration API erstellen. Dadurch können Sie Ihre Suchindexdefinitionen zusammen mit Ihrem Anwendungscode versionieren. Der Atlas-CLI-Befehl lautet atlas clusters search indexes create und verwendet eine JSON-Konfigurationsdatei.
# 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 und Überwachung
Nach dem Erstellen eines Suchindex durchläuft dieser den Status BUILDING, während Lucene vorhandene Dokumente verarbeitet. Während dieser Zeit können Abfragen unvollständige Ergebnisse liefern oder mit einem Fehler fehlschlagen. Sobald der Status READY anzeigt (grün in der Atlas-Benutzeroberfläche), umfasst der Index alle vorhandenen Dokumente. Neue Dokumente, die nach der Indexerstellung hinzugefügt werden, werden mit einer kurzen Verzögerung indiziert. Überwachen Sie den Indexstatus programmgesteuert über die Atlas Administration API oder die 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' messageIndizierung verschachtelter Felder und Array-Felder
Atlas Search kann verschachtelte Dokumentfelder und Array-Elemente indizieren. Verwenden Sie die Punktnotation im Feldpfad, um auf verschachtelte Felder zu verweisen, genau wie bei regulären MongoDB-Abfragen. Bei Arrays mit Unterdokumenten wird jedes Element separat indiziert. Dadurch können Sie innerhalb eingebetteter Objekte suchen – beispielsweise Produkte finden, bei denen eine beliebige Farboption einem Suchbegriff entspricht.
// 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' }
}
}
}Index mit $search überprüfen
Sobald Ihr Atlas-Search-Index den Status READY hat, testen Sie ihn mit einer $search-Aggregationsstufe. Die einfachste Abfrage verwendet den text-Operator, um nach einem Schlüsselwort in allen indizierten String-Feldern zu suchen. Eine erfolgreiche Antwort bestätigt, dass der Index erstellt wurde und Abfragen funktionieren. Untersuchen Sie searchScore in der projizierten Ausgabe, um die Relevanzbewertung zu verstehen.
// 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 }
])Benennung von Indizes und mehrere Indizes
Sie können mehrere Atlas-Search-Indizes für dieselbe Collection erstellen, jeweils mit einem anderen Namen, einer anderen Feldkonfiguration und anderen Analyzern. So können verschiedene Anwendungsfälle speziell zugeschnittene Indizes verwenden – einen allgemeinen Suchindex mit dynamischem Mapping, einen Index für strikte Übereinstimmungen mit Keyword-Analyzern und einen Autocomplete-Index. Geben Sie beim Ausführen einer $search-Abfrage das Feld index an, um den zu verwendenden Suchindex auszuwählen.
// 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'
}
}
}
]);Schnelltest
Testen Sie Ihr Verständnis der Konzepte zu MongoDB & NoSQL-Datenbanken aus dieser Lektion.
Zusammenfassung der Lektion
In dieser Lektion haben Sie gelernt: Atlas Search ist eine auf Lucene basierende Volltextsuchmaschine, die in MongoDB Atlas eingebettet ist, dynamisches Mapping indiziert automatisch alle Felder, während statisches Mapping explizite Felddefinitionen für eine präzisere Steuerung erfordert, und Analyzer wie lucene.standard, lucene.english und lucene.keyword steuern, wie Text in Tokens zerlegt und gespeichert wird. Als Nächstes sehen wir uns das Schreiben von $search-Aggregationsabfragen mit den Operatoren text, phrase und wildcard an.
Lerne JavaScript mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 30
- Lektionen
- 120
Häufig gestellte Fragen
Ist die Lektion „Einen Atlas-Search-Index erstellen“ kostenlos?
Ja — der vollständige Text von „Einen Atlas-Search-Index erstellen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des MongoDB Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der MongoDB Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Einen Atlas-Search-Index erstellen“?
Sie definieren ein Mapping für einen Suchindex in der Atlas-Oberfläche oder über die API und verstehen, wie Lucene Feldwerte tokenisiert und speichert. Du übst MongoDB Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um MongoDB Academy zu starten?
Keine Vorkenntnisse erforderlich. MongoDB Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Einen Atlas-Search-Index erstellen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser MongoDB Academy-Lektion Code schreiben und ausführen?
Ja. Jede MongoDB Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Einen Atlas-Search-Index erstellen
- $search-Abfragen schreiben: Text, Phrase und Wildcard
- Autocomplete und Fuzzy Matching
- Facetten und zusammengesetzte Abfragen