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

  1. Remove the [N] index from the flat property path — positional filtering only applies to object[] properties
  2. 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.