Verschachtelte und Object-Feldtypen
Lernen Sie, wie Elasticsearch JSON-Objekte und -Arrays verarbeitet, warum der standardmäßige Object-Typ Daten abflacht und wie der Nested-Typ Beziehungen innerhalb von Objekt-Arrays bewahrt.
Verschachtelte und Object-Feldtypen ist eine kostenlose Elasticsearch & Full Text Search Systems-Lektion auf CoddyKit. Dies ist Lektion 4 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 Elasticsearch & Full Text Search Systems-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Elasticsearch & Full Text Search Systems-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
Storing Structured Data
Real-world documents often contain nested structures: a blog post with comments, a product with variants, or an order with line items. Elasticsearch must decide how to index these JSON objects so they stay searchable.
This lesson covers the two main approaches: the default object type and the specialized nested type.
The Default object Type
By default, any JSON object inside a document is mapped as the object type. Elasticsearch flattens the inner fields into dotted paths.
A field author.name simply becomes a normal Lucene field. This is efficient and works perfectly for single objects.
PUT my_index/_doc/1
{
"author": { "first": "Jane", "last": "Doe" }
}How Flattening Looks
Internally the object above is stored as two flat fields: author.first = Jane and author.last = Doe. The hierarchy is only conceptual; Lucene sees independent fields.
This is fine until you have an array of objects.
The Flattening Problem
Consider an array of users. After flattening, Elasticsearch loses the link between which first name belongs to which last name.
The arrays become user.first = [Alice, John] and user.last = [White, Smith] separately.
PUT my_index/_doc/2
{
"user": [
{ "first": "Alice", "last": "White" },
{ "first": "John", "last": "Smith" }
]
}Why It Matters
A query for first = Alice AND last = Smith would incorrectly match the document above, because the cross-object relationship is gone. The values are pooled together.
The nested type solves this.
Declaring a Nested Field
Set the field type to nested in the mapping. Each object in the array is then indexed as a hidden, separate Lucene document, preserving its internal field relationships.
PUT my_index
{
"mappings": {
"properties": {
"user": { "type": "nested" }
}
}
}Querying Nested Fields
You must use a nested query and specify the path. Conditions inside are evaluated against a single sub-document, so cross-object false matches disappear.
GET my_index/_search
{
"query": {
"nested": {
"path": "user",
"query": {
"bool": { "must": [
{ "match": { "user.first": "Alice" }},
{ "match": { "user.last": "Smith" }}
]}
}
}
}
}Inner Hits
Add inner_hits to a nested query to return which specific sub-document(s) matched, not just the parent document. This is essential for highlighting the relevant array element.
"nested": {
"path": "user",
"inner_hits": {},
"query": { "match": { "user.first": "Alice" } }
}Costs of Nested
Nested fields are powerful but have trade-offs:
- Each array element is a separate Lucene doc, increasing index size.
- Updating one element re-indexes the whole parent document.
- Deeply nested or large arrays can hurt performance.
Use the index.mapping.nested_objects.limit setting to cap counts.
Nested vs join
For tightly coupled data that updates together, nested is ideal. For independently updated, high-cardinality relationships, consider the join (parent-child) field type instead, which decouples updates at a higher query cost.
When to Choose Which
Use object when arrays do not require cross-field correlation. Use nested when you must match multiple fields within the same array element. Defaulting to nested for everything wastes resources.
Quick Check
Test your understanding of nested mappings.
Recap
You learned how Elasticsearch indexes JSON objects:
- The default
objecttype flattens fields and pools array values. - The
nestedtype indexes each array element separately to preserve relationships. - Query nested fields with the
nestedquery plus apath, and useinner_hitsto find matching elements. - Nested types cost more storage and require full re-indexing on element updates.
Häufig gestellte Fragen
Ist die Lektion „Verschachtelte und Object-Feldtypen“ kostenlos?
Ja — der vollständige Text von „Verschachtelte und Object-Feldtypen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Elasticsearch & Full Text Search Systems-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Elasticsearch & Full Text Search Systems-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Verschachtelte und Object-Feldtypen“?
Lernen Sie, wie Elasticsearch JSON-Objekte und -Arrays verarbeitet, warum der standardmäßige Object-Typ Daten abflacht und wie der Nested-Typ Beziehungen innerhalb von Objekt-Arrays bewahrt. Du übst Elasticsearch & Full Text Search Systems 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 Elasticsearch & Full Text Search Systems zu starten?
Keine Vorkenntnisse erforderlich. Elasticsearch & Full Text Search Systems 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 4 von 4.
Wie lange dauert die Lektion „Verschachtelte und Object-Feldtypen“?
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 Elasticsearch & Full Text Search Systems-Lektion Code schreiben und ausführen?
Ja. Jede Elasticsearch & Full Text Search Systems-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
- Feld-Mappings anpassen
- Dynamische und explizite Mappings
- Indexvorlagen und Aliase
- Verschachtelte und Object-Feldtypen