@Override protected ScriptedMetricAggregatorFactory doBuild( AggregationContext context, AggregatorFactory<?> parent, Builder subfactoriesBuilder) throws IOException { QueryShardContext queryShardContext = context.searchContext().getQueryShardContext(); Function<Map<String, Object>, ExecutableScript> executableInitScript; if (initScript != null) { executableInitScript = queryShardContext.getLazyExecutableScript(initScript, ScriptContext.Standard.AGGS); } else { executableInitScript = (p) -> null; ; } Function<Map<String, Object>, SearchScript> searchMapScript = queryShardContext.getLazySearchScript(mapScript, ScriptContext.Standard.AGGS); Function<Map<String, Object>, ExecutableScript> executableCombineScript; if (combineScript != null) { executableCombineScript = queryShardContext.getLazyExecutableScript(combineScript, ScriptContext.Standard.AGGS); } else { executableCombineScript = (p) -> null; } return new ScriptedMetricAggregatorFactory( name, type, searchMapScript, executableInitScript, executableCombineScript, reduceScript, params, context, parent, subfactoriesBuilder, metaData); }