public void read()

in src/main/java/org/opensearch/knn/training/VectorReader.java [61:102]


    public void read(ClusterService clusterService, String indexName, String fieldName, int maxVectorCount,
                     int searchSize, Consumer<List<Float[]>> vectorConsumer, ActionListener<SearchResponse> listener) {

        ValidationException validationException = null;

        // Validate arguments
        if (maxVectorCount <= 0) {
            validationException = new ValidationException();
            validationException.addValidationError("maxVectorCount must be >= 0");
        }

        if (searchSize > 10000 || searchSize <= 0) {
            validationException = validationException == null ? new ValidationException() : validationException;
            validationException.addValidationError("searchSize must be > 0 and <= 10000");
        }

        IndexMetadata indexMetadata = clusterService.state().metadata().index(indexName);
        if (indexMetadata == null) {
            validationException = validationException == null ? new ValidationException() : validationException;
            validationException.addValidationError("index \"" + indexName + "\" does not exist");
            throw validationException;
        }

        ValidationException fieldValidationException = IndexUtil.validateKnnField(indexMetadata, fieldName, -1, null);
        if (fieldValidationException != null) {
            validationException = validationException == null ? new ValidationException() : validationException;
            validationException.addValidationErrors(validationException.validationErrors());
        }

        if (validationException != null) {
            throw validationException;
        }

        // Start reading vectors from index
        SearchScrollRequestBuilder searchScrollRequestBuilder = createSearchScrollRequestBuilder();

        ActionListener<SearchResponse> vectorReaderListener = new VectorReaderListener(client, fieldName,
                maxVectorCount, 0, listener, vectorConsumer, searchScrollRequestBuilder);

        createSearchRequestBuilder(indexName, fieldName, Integer.min(maxVectorCount, searchSize))
                .execute(vectorReaderListener);
    }