### Description

This is a followup to #85926.

As part of the ingest processing pipeline, we call `CollectionUtils.ensureNoSelfReferences(...)` to ensure that a script processor didn't accidentally introduce a circular object. However, this check is only necessary if we know there was the potential for a circular option, which can only happen with either a custom processor (a plugin where we have no control), or a script processor. We should be able to only call this sanity check if we know we need it, rather than for every document.
server/src/main/java/org/elasticsearch/ingest/IngestService.java
return NOOP_PIPELINE_NAME.equals(indexRequest.getPipeline()) == false
            || NOOP_PIPELINE_NAME.equals(indexRequest.getFinalPipeline()) == false;
    }
    private static String resolveIndexName(final String unresolvedIndexName, final long epochMillis) {
        List<String> resolvedNames = IndexNameExpressionResolver.DateMathExpressionResolver.resolve(
            new IndexNameExpressionResolver.ResolverContext(epochMillis),
            List.of(unresolvedIndexName)
        );
        assert resolvedNames.size() == 1;
        return resolvedNames.get(0);
    }
    public ClusterService getClusterService() {
        return clusterService;
    }
    public ScriptService getScriptService() {
        return scriptService;
    }
    /**
     * Deletes the pipeline specified by id in the request.
     */
    public void delete(DeletePipelineRequest request, ActionListener<AcknowledgedResponse> listener) {
        clusterService.submitStateUpdateTask(
            "delete-pipeline-" + request.getId(),
            new DeletePipelineClusterStateUpdateTask(listener, request),
            ClusterStateTaskConfig.build(Priority.NORMAL, request.masterNodeTimeout()),
            PIPELINE_TASK_EXECUTOR
        );
    }
    
    static class DeletePipelineClusterStateUpdateTask extends PipelineClusterStateUpdateTask {