Skip to content

Deprecate "value scripts" on aggregations? #31532

Closed
@polyfractal

Description

@polyfractal

Today, there is a (little-documented) feature where specifying a field + script on an aggregation will run the script in "value script" mode. Each value in the field will be passed to the script under the _value variable so that the script can modify it, before letting the aggregation collect it.

This is a very trappy API, because there are no safeguards from the user specifying a "normal" script that tries to access regular fields. It can lead to confusion like #20773 and #11728

In #20733, we decided to add a value_script and deprecate field + script combo. Which is certainly doable, but I'm wondering if we should just deprecate the concept of value scripts entirely? I'm not sure how widespread usage actually is?

Besides being confusing, value scripts adds a fair amount of complexity to the code when trying to resolve the ValuesSource, adds another set of Scorer wrappers (ValuesSource.Numeric.WithScript, ValuesSource.WithScript) and adds a bespoke setNextAggregationValue() in the script implementation solely to satisfy this feature.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions