weaviate/weaviate · error
property %q: [N] indexing is only supported on nested object
Error message
property %q: [N] indexing is only supported on nested object[] properties
What it means
Validation guard in validateClause: a filter path used [N] positional indexing (e.g. 'tagsArray[0]') on a property that is not a nested object[] property; the positional intent would be silently dropped, so it is rejected.
Source
Thrown at entities/filters/filters_validator.go:103
// Strip any [N] index from the first path segment so that "nested[0].city"
// correctly resolves to the "nested" property in the schema.
rootName := nested.RootPropName(propName.String())
prop, err := schema.GetPropertyByName(class, rootName)
if err != nil {
return err
}
// [N] indexing is only meaningful for nested object[] properties. If the
// user wrote it on a flat property the positional intent would otherwise
// be silently dropped (e.g. "tagsArray[0]" would degrade to "tagsArray"),
// so reject it at validation time. Inspect the first path segment
// directly so this branch only triggers when the user actually wrote [N];
// any other malformed dotted input falls through to a more appropriate
// error path below.
if nested.ParseSegments(propName.String())[0].HasIndex {
if _, ok := schema.AsNested(prop.DataType); !ok {
return fmt.Errorf("property %q: [N] indexing is only supported on nested object[] properties",
propName)
}
}
if _, ok := schema.AsNested(prop.DataType); ok {
// Preview gate — fires before any other nested validation so the user
// sees a single actionable message instead of a downstream
// "sub-property not found" / contradiction error. See
// entities/config/feature_flags.go.
if !entcfg.NestedFilteringEnabled() {
return entcfg.NestedFilteringDisabledError()
}
return validateNestedProp(prop, propName, isPropLengthFilter, cw)
}
if cw.getOperator() == OperatorIsNull {
if !cw.isType(schema.DataTypeBoolean) {
return errors.Errorf("operator IsNull requires a booleanValue, got %v instead",View on GitHub (pinned to 75aa4b6d11)
Solutions
- Remove the [N] index from the flat property path — positional filtering only applies to object[] properties
- If positional intent matters, model the data as a nested object[] and use nested[0].field paths
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at entities/filters/filters_validator.go:103 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04).
Data as JSON: /api/errors/e5eaeff77e9263e5.
Report an issue: GitHub.