weaviate/weaviate · error

%w: unrecognized data type for property: %s

Error message

%w: unrecognized data type for property: %s

What it means

After resolving the groupBy property name, groupResults resolves its data type with schema.FindPropertyDataTypeWithRefs. Failure means the property's declared dataType cannot be interpreted by the schema — an internal schema-consistency problem rather than a bad user input name (the name resolved, its type didn't).

Source

Thrown at adapters/repos/db/shard_group_by.go:45

)

func (s *Shard) groupResults(ctx context.Context, ids []uint64,
	dists []float32, groupBy *searchparams.GroupBy,
	additional additional.Properties, properties []string,
) ([]*storobj.Object, []float32, error) {
	objsBucket := s.store.Bucket(helpers.ObjectsBucketLSM)
	className := s.index.Config.ClassName
	class := s.index.getSchema.ReadOnlyClass(className.String())
	if class == nil {
		return nil, nil, fmt.Errorf("could not find class %s in schema", className)
	}
	prop, err := schema.GetPropertyByName(class, groupBy.Property)
	if err != nil {
		return nil, nil, fmt.Errorf("%w: unrecognized property: %s", err, groupBy.Property)
	}
	dt, err := schema.FindPropertyDataTypeWithRefs(s.index.getSchema.ReadOnlyClass, prop.DataType, false, "")
	if err != nil {
		return nil, nil, fmt.Errorf("%w: unrecognized data type for property: %s", err, groupBy.Property)
	}

	var props []string
	props = append(props, properties...)
	for _, propTmp := range groupBy.Properties {
		props = append(props, propTmp.Name)
	}

	return newGrouper(ids, dists, groupBy, objsBucket, dt, additional, props).Do(ctx)
}

type grouper struct {
	ids              []uint64
	dists            []float32
	groupBy          *searchparams.GroupBy
	additional       additional.Properties
	propertyDataType schema.PropertyDataType
	objBucket        *lsmkv.Bucket

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Inspect the property's dataType in GET /v1/schema and correct it via the schema update API (PATCH /v1/schema/{className})
  2. If a cross-reference type is dangling, fix or remove the reference property
  3. Restore schema from a backup taken before the corrupting change
  4. Report/verify against the Weaviate version: check release notes for dataType changes
Defensive patterns

Strategy: fallback

Validate before calling

// verify the property's dataType resolves
const prop = schema.classes.find(c => c.class === cls)
  ?.properties.find(p => p.name === name)
const knownTypes = ["text","string","int","number","boolean","date","geoCoordinates",
  "blob","phoneNumber","uuid", "text[]","int[]", ...];
if (prop && prop.dataType.some(dt => !knownTypes.includes(dt) && !crossRefOk(dt)))
  repairSchema(cls, name);

Try / catch

// fall back to ungrouped search if schema is inconsistent
objs, err := shard.GroupResults(...)
if err != nil && strings.Contains(err.Error(), "unrecognized data type") {
  objs, err = shard.SearchUnGrouped(...) // degraded but usable results
}

Prevention

When it happens

Trigger: Grouped search on a collection whose property has an unresolvable dataType, typically after a broken schema update, migration, or manually edited schema metadata referencing an unknown type or dangling cross-reference.

Common situations: Schema upgraded/downgraded across Weaviate versions where a dataType string is no longer registered; partially applied schema migration; corrupted schema metadata for cross-reference types.

Related errors


AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04). Data as JSON: /api/errors/cb546fd6cfdb1c78. Report an issue: GitHub.