|
39 | 39 | import org.elasticsearch.index.mapper.MappedFieldType;
|
40 | 40 | import org.elasticsearch.index.mapper.MapperService;
|
41 | 41 | import org.elasticsearch.script.BucketAggregationScript;
|
| 42 | +import org.elasticsearch.script.BucketAggregationSelectorScript; |
42 | 43 | import org.elasticsearch.script.ClassPermission;
|
43 | 44 | import org.elasticsearch.script.ExecutableScript;
|
44 | 45 | import org.elasticsearch.script.FilterScript;
|
@@ -116,6 +117,18 @@ protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundE
|
116 | 117 | return context.factoryClazz.cast(factory);
|
117 | 118 | } else if (context.instanceClazz.equals(BucketAggregationScript.class)) {
|
118 | 119 | 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); |
119 | 132 | } else if (context.instanceClazz.equals(FilterScript.class)) {
|
120 | 133 | FilterScript.Factory factory = (p, lookup) -> newFilterScript(expr, lookup, p);
|
121 | 134 | return context.factoryClazz.cast(factory);
|
|
0 commit comments