go-redis/redis · error

FT.HYBRID: ASC and DESC are mutually exclusive

Error message

FT.HYBRID: ASC and DESC are mutually exclusive

What it means

Error "FT.HYBRID: ASC and DESC are mutually exclusive" thrown in go-redis/redis.

Source

Thrown at search_commands.go:3975

			if options.GroupBy.ReduceFunc != "" {
				args = append(args, "REDUCE", options.GroupBy.ReduceFunc, options.GroupBy.ReduceCount)
				args = append(args, options.GroupBy.ReduceParams...)
			}
		}

		// Add APPLY transformations
		for _, apply := range options.Apply {
			args = append(args, "APPLY", apply.Expression, "AS", apply.AsField)
		}

		// Add SORTBY
		if len(options.SortBy) > 0 {
			sortByOptions := []interface{}{}
			for _, sortBy := range options.SortBy {
				sortByOptions = append(sortByOptions, sortBy.FieldName)
				if sortBy.Asc && sortBy.Desc {
					cmd := newFTHybridCmd(ctx, options, args...)
					cmd.SetErr(fmt.Errorf("FT.HYBRID: ASC and DESC are mutually exclusive"))
					return cmd
				}
				if sortBy.Asc {
					sortByOptions = append(sortByOptions, "ASC")
				}
				if sortBy.Desc {
					sortByOptions = append(sortByOptions, "DESC")
				}
			}
			args = append(args, "SORTBY", len(sortByOptions))
			args = append(args, sortByOptions...)
		}

		// Add FILTER (post-filter)
		if options.Filter != "" {
			args = append(args, "FILTER", options.Filter)
		}

View on GitHub (pinned to 36d97525cd)

Solutions

  1. Set only one of Asc/Desc in the FT.HYBRID sort options
  2. Derive sort direction from a single enum value

When it happens

Trigger: Thrown at search_commands.go:3975 when the library encounters an invalid state.

Common situations: Model sort direction as one enum field rather than two booleans.


AI-assisted analysis of go-redis/redis@36d97525cd (2026-08-06). Data as JSON: /data/errors/fe84cbfc35a7401d.json. Report an issue: GitHub.