### 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/action/index/IndexRequest.java
return indexRouting.indexShard(id, routing, contentType, source);
    }
    public IndexRequest setRequireAlias(boolean requireAlias) {
        this.requireAlias = requireAlias;
        return this;
    }
    /**
     * Specifies a map from the full path of field names to the name of dynamic mapping templates
     */
    public IndexRequest setDynamicTemplates(Map<String, String> dynamicTemplates) {
        this.dynamicTemplates = Objects.requireNonNull(dynamicTemplates);
        return this;
    }
    /**
     * Returns a map from the full path of field names to the name of dynamic mapping templates.
     *
     * @see #setDynamicTemplates(Map)
     */
    public Map<String, String> getDynamicTemplates() {
        return dynamicTemplates;
    }
    public Object getRawTimestamp() {
        return rawTimestamp;
    }
    public void setRawTimestamp(Object rawTimestamp) {
        assert this.rawTimestamp == null : "rawTimestamp only set in ingest phase, it can't be set twice";
        this.rawTimestamp = rawTimestamp;
    }
}