Skip to content

Commit 0f13633

Browse files
CR: Make BucketSelectorPipelineAggregator agnositic to language
1 parent bc27466 commit 0f13633

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

modules/lang-expression/src/main/java/org/elasticsearch/script/expression/ExpressionScriptEngine.java

+13
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.elasticsearch.index.mapper.MappedFieldType;
4040
import org.elasticsearch.index.mapper.MapperService;
4141
import org.elasticsearch.script.BucketAggregationScript;
42+
import org.elasticsearch.script.BucketAggregationSelectorScript;
4243
import org.elasticsearch.script.ClassPermission;
4344
import org.elasticsearch.script.ExecutableScript;
4445
import org.elasticsearch.script.FilterScript;
@@ -116,6 +117,18 @@ protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundE
116117
return context.factoryClazz.cast(factory);
117118
} else if (context.instanceClazz.equals(BucketAggregationScript.class)) {
118119
return context.factoryClazz.cast(newBucketAggregationScriptFactory(expr));
120+
} else if (context.instanceClazz.equals(BucketAggregationSelectorScript.class)) {
121+
BucketAggregationScript.Factory factory = newBucketAggregationScriptFactory(expr);
122+
BucketAggregationSelectorScript.Factory wrappedFactory = () -> {
123+
BucketAggregationScript script = factory.newInstance();
124+
return new BucketAggregationSelectorScript() {
125+
@Override
126+
public boolean execute(Map<String, Object> params) {
127+
return script.execute(params) == 1.0;
128+
}
129+
};
130+
};
131+
return context.factoryClazz.cast(wrappedFactory);
119132
} else if (context.instanceClazz.equals(FilterScript.class)) {
120133
FilterScript.Factory factory = (p, lookup) -> newFilterScript(expr, lookup, p);
121134
return context.factoryClazz.cast(factory);

0 commit comments

Comments
 (0)