diff --git a/mapping/document.go b/mapping/document.go index d62675e5..d4c9a8f9 100644 --- a/mapping/document.go +++ b/mapping/document.go @@ -179,6 +179,7 @@ OUTER: continue OUTER } } + break } return current } diff --git a/mapping/mapping_test.go b/mapping/mapping_test.go index 5cd86015..735aef05 100644 --- a/mapping/mapping_test.go +++ b/mapping/mapping_test.go @@ -991,3 +991,26 @@ func TestMappingForNilTextMarshaler(t *testing.T) { } } + +func TestClosestDocDynamicMapping(t *testing.T) { + mapping := NewIndexMapping() + mapping.IndexDynamic = false + mapping.DefaultMapping = NewDocumentStaticMapping() + mapping.DefaultMapping.AddFieldMappingsAt("foo", NewTextFieldMapping()) + + doc := document.NewDocument("x") + err := mapping.MapDocument(doc, map[string]interface{}{ + "foo": "value", + "bar": map[string]string{ + "foo": "value2", + "baz": "value3", + }, + }) + if err != nil { + t.Fatal(err) + } + + if len(doc.Fields) != 1 { + t.Fatalf("expected 1 field, got: %d", len(doc.Fields)) + } +}