{"record":{"id":"f178bf486c9c81e0","repo":"elastic/elasticsearch","slug":"bucket-sort-only-supports-field-based-sorting-i","errorCode":null,"errorMessage":"[bucket_sort] only supports field based sorting; incompatible sort: [{sort}]","messagePattern":"\\[bucket_sort\\] only supports field based sorting; incompatible sort: \\[(.+?)\\]","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/aggregations/src/main/java/org/elasticsearch/aggregations/pipeline/BucketSortPipelineAggregationBuilder.java","lineNumber":63,"sourceCode":"    public static final String NAME = \"bucket_sort\";\n\n    private static final ParseField FROM = new ParseField(\"from\");\n    private static final ParseField SIZE = new ParseField(\"size\");\n\n    @SuppressWarnings(\"unchecked\")\n    public static final ConstructingObjectParser<BucketSortPipelineAggregationBuilder, String> PARSER = new ConstructingObjectParser<>(\n        NAME,\n        false,\n        (a, context) -> new BucketSortPipelineAggregationBuilder(context, (List<FieldSortBuilder>) a[0])\n    );\n\n    static {\n        PARSER.declareField(optionalConstructorArg(), (p, c) -> {\n            List<SortBuilder<?>> sorts = SortBuilder.fromXContent(p);\n            List<FieldSortBuilder> fieldSorts = new ArrayList<>(sorts.size());\n            for (SortBuilder<?> sort : sorts) {\n                if (sort instanceof FieldSortBuilder == false) {\n                    throw new IllegalArgumentException(\n                        \"[\" + NAME + \"] only supports field based sorting; incompatible sort: [\" + sort + \"]\"\n                    );\n                }\n                fieldSorts.add((FieldSortBuilder) sort);\n            }\n            return fieldSorts;\n        }, SearchSourceBuilder.SORT_FIELD, ObjectParser.ValueType.OBJECT_ARRAY);\n        PARSER.declareInt(BucketSortPipelineAggregationBuilder::from, FROM);\n        PARSER.declareInt(BucketSortPipelineAggregationBuilder::size, SIZE);\n        PARSER.declareField(BucketSortPipelineAggregationBuilder::gapPolicy, p -> {\n            if (p.currentToken() == XContentParser.Token.VALUE_STRING) {\n                return GapPolicy.parse(p.text().toLowerCase(Locale.ROOT), p.getTokenLocation());\n            }\n            throw new IllegalArgumentException(\"Unsupported token [\" + p.currentToken() + \"]\");\n        }, GAP_POLICY, ObjectParser.ValueType.STRING);\n    }\n\n    private List<FieldSortBuilder> sorts = Collections.emptyList();","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/elastic/elasticsearch/blob/db6a809a667c081ca1dc7500389d26975573215f/modules/aggregations/src/main/java/org/elasticsearch/aggregations/pipeline/BucketSortPipelineAggregationBuilder.java#L45-L81","documentation":"Error \"[bucket_sort] only supports field based sorting; incompatible sort: [{sort}]\" thrown in elastic/elasticsearch.","triggerScenarios":"Thrown at modules/aggregations/src/main/java/org/elasticsearch/aggregations/pipeline/BucketSortPipelineAggregationBuilder.java:63 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"db6a809a667c081ca1dc7500389d26975573215f","analyzedAt":"2026-08-12T01:39:14.192Z","schemaVersion":2},"datasetVersion":"2026-08-12T12:31:55.035Z"}