Lucene 9.8 updates the vector dimension limit overridability. Moving it to the codec. 

We should switch our override to do this correctly now, instead of returning a `FieldType` overriding the value.

For now, this commit would belong in the `lucene_snapshot` branch.
server/src/main/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapper.java
);
            }
            elementType.checkVectorBounds(queryVector);
            if (similarity == VectorSimilarity.DOT_PRODUCT || similarity == VectorSimilarity.COSINE) {
                float squaredMagnitude = VectorUtil.dotProduct(queryVector, queryVector);
                elementType.checkVectorMagnitude(
                    indexVersionCreated,
                    similarity,
                    elementType.errorFloatElementsAppender(queryVector),
                    squaredMagnitude
                );
                
                
                
                if (similarity == VectorSimilarity.DOT_PRODUCT
                    && elementType == ElementType.FLOAT
                    && indexVersionCreated.onOrAfter(DOT_PRODUCT_AUTO_NORMALIZED)) {
                    queryVector = Arrays.copyOf(queryVector, queryVector.length);
                    similarity.floatPreprocessing(queryVector, squaredMagnitude);
                }
            }
            Query knnQuery = switch (elementType) {
                case BYTE -> {
                    byte[] bytes = new byte[queryVector.length];
                    for (int i = 0; i < queryVector.length; i++) {
                        bytes[i] = (byte) queryVector[i];
                    }
                    yield new KnnByteVectorQuery(name(), bytes, numCands, filter);
                }
                case FLOAT -> new KnnFloatVectorQuery(name(), queryVector, numCands, filter);