### Description

It would be really great if [CircleProcessor.java](https://github.com/elastic/elasticsearch/blob/0699c9351f1439e246d408fd6538deafde4087b6/x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/ingest/CircleProcessor.java) could be published in some maven artifact.
We are thinking to convert Geoshape Circle into Geoshape Polygon on application side instead of ElasticSearch Server side. The benefits of it is that it would make possible for us to choose `error_distance` dynamically depending on different conditions.
With direct code access to [CircleProcessor.java](https://github.com/elastic/elasticsearch/blob/0699c9351f1439e246d408fd6538deafde4087b6/x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/ingest/CircleProcessor.java) and [SpatialUtils.java](https://github.com/elastic/elasticsearch/blob/0699c9351f1439e246d408fd6538deafde4087b6/x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/SpatialUtils.java) it would be possible to make application side custom conversion logic.
ElasticSearch version: >= 8
x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/ingest/CircleProcessor.java
throw new IllegalArgumentException("found [" + geometry.type() + "] instead of circle");
            }
        } catch (Exception e) {
            throw new IllegalArgumentException("invalid circle definition", e);
        }
        return ingestDocument;
    }
    @Override
    public String getType() {
        return TYPE;
    }
    String field() {
        return field;
    }
    String targetField() {
        return targetField;
    }
    double errorDistance() {
        return errorDistance;
    }
    CircleShapeFieldType shapeType() {
        return circleShapeFieldType;
    }
    int numSides(double radiusMeters) {
        int val = (int) Math.ceil(2 * Math.PI / Math.acos(1 - errorDistance / radiusMeters));
        return Math.min(MAXIMUM_NUMBER_OF_SIDES, Math.max(MINIMUM_NUMBER_OF_SIDES, val));
    }
    public static final class Factory implements Processor.Factory {
        public CircleProcessor create(
            Map<String, Processor.Factory> registry,