Search in sources :

Example 6 with Mapper

use of org.opensearch.index.mapper.Mapper in project k-NN by opensearch-project.

the class KNNVectorFieldMapperTests method testKNNVectorFieldMapper_merge_fromModel.

public void testKNNVectorFieldMapper_merge_fromModel() throws IOException {
    String fieldName = "test-field-name";
    String indexName = "test-index-name";
    Settings settings = Settings.builder().put(settings(CURRENT).build()).build();
    String modelId = "test-id";
    int dimension = 133;
    ModelDao mockModelDao = mock(ModelDao.class);
    ModelMetadata mockModelMetadata = new ModelMetadata(KNNEngine.DEFAULT, SpaceType.DEFAULT, dimension, ModelState.CREATED, ZonedDateTime.now(ZoneOffset.UTC).toString(), "", "");
    when(mockModelDao.getMetadata(modelId)).thenReturn(mockModelMetadata);
    KNNVectorFieldMapper.TypeParser typeParser = new KNNVectorFieldMapper.TypeParser(() -> mockModelDao);
    XContentBuilder xContentBuilder = XContentFactory.jsonBuilder().startObject().field("type", "knn_vector").field(MODEL_ID, modelId).endObject();
    KNNVectorFieldMapper.Builder builder = (KNNVectorFieldMapper.Builder) typeParser.parse(fieldName, xContentBuilderToMap(xContentBuilder), buildParserContext(indexName, settings));
    Mapper.BuilderContext builderContext = new Mapper.BuilderContext(settings, new ContentPath());
    KNNVectorFieldMapper knnVectorFieldMapper1 = builder.build(builderContext);
    // merge with itself - should be successful
    KNNVectorFieldMapper knnVectorFieldMapperMerge1 = (KNNVectorFieldMapper) knnVectorFieldMapper1.merge(knnVectorFieldMapper1);
    assertEquals(knnVectorFieldMapper1.modelId, knnVectorFieldMapperMerge1.modelId);
    // merge with another mapper of the same field with same context
    KNNVectorFieldMapper knnVectorFieldMapper2 = builder.build(builderContext);
    KNNVectorFieldMapper knnVectorFieldMapperMerge2 = (KNNVectorFieldMapper) knnVectorFieldMapper1.merge(knnVectorFieldMapper2);
    assertEquals(knnVectorFieldMapper1.modelId, knnVectorFieldMapperMerge2.modelId);
    // merge with another mapper of the same field with different context
    xContentBuilder = XContentFactory.jsonBuilder().startObject().field("type", "knn_vector").field("dimension", dimension).startObject(KNN_METHOD).field(NAME, METHOD_HNSW).endObject().endObject();
    builder = (KNNVectorFieldMapper.Builder) typeParser.parse(fieldName, xContentBuilderToMap(xContentBuilder), buildParserContext(indexName, settings));
    KNNVectorFieldMapper knnVectorFieldMapper3 = builder.build(builderContext);
    expectThrows(IllegalArgumentException.class, () -> knnVectorFieldMapper1.merge(knnVectorFieldMapper3));
}
Also used : XContentBuilder(org.opensearch.common.xcontent.XContentBuilder) ContentPath(org.opensearch.index.mapper.ContentPath) Mapper(org.opensearch.index.mapper.Mapper) ModelDao(org.opensearch.knn.indices.ModelDao) ModelMetadata(org.opensearch.knn.indices.ModelMetadata) IndexScopedSettings(org.opensearch.common.settings.IndexScopedSettings) Settings(org.opensearch.common.settings.Settings) IndexSettings(org.opensearch.index.IndexSettings) XContentBuilder(org.opensearch.common.xcontent.XContentBuilder)

Example 7 with Mapper

use of org.opensearch.index.mapper.Mapper in project OpenSearch by opensearch-project.

the class TransportGetFieldMappingsIndexAction method shardOperation.

@Override
protected GetFieldMappingsResponse shardOperation(final GetFieldMappingsIndexRequest request, ShardId shardId) {
    assert shardId != null;
    IndexService indexService = indicesService.indexServiceSafe(shardId.getIndex());
    Version indexCreatedVersion = indexService.mapperService().getIndexSettings().getIndexVersionCreated();
    Predicate<String> metadataFieldPredicate = (f) -> indicesService.isMetadataField(indexCreatedVersion, f);
    Predicate<String> fieldPredicate = metadataFieldPredicate.or(indicesService.getFieldFilter().apply(shardId.getIndexName()));
    DocumentMapper mapper = indexService.mapperService().documentMapper();
    Collection<String> typeIntersection;
    if (request.types().length == 0) {
        typeIntersection = mapper == null ? Collections.emptySet() : Collections.singleton(mapper.type());
    } else {
        typeIntersection = mapper != null && Regex.simpleMatch(request.types(), mapper.type()) ? Collections.singleton(mapper.type()) : Collections.emptySet();
        if (typeIntersection.isEmpty()) {
            throw new TypeMissingException(shardId.getIndex(), request.types());
        }
    }
    Map<String, Map<String, FieldMappingMetadata>> typeMappings = new HashMap<>();
    for (String type : typeIntersection) {
        DocumentMapper documentMapper = indexService.mapperService().documentMapper(type);
        Map<String, FieldMappingMetadata> fieldMapping = findFieldMappingsByType(fieldPredicate, documentMapper, request);
        if (!fieldMapping.isEmpty()) {
            typeMappings.put(type, fieldMapping);
        }
    }
    return new GetFieldMappingsResponse(singletonMap(shardId.getIndexName(), Collections.unmodifiableMap(typeMappings)));
}
Also used : BytesReference(org.opensearch.common.bytes.BytesReference) ToXContent(org.opensearch.common.xcontent.ToXContent) ThreadPool(org.opensearch.threadpool.ThreadPool) Version(org.opensearch.Version) HashMap(java.util.HashMap) FieldMappingMetadata(org.opensearch.action.admin.indices.mapping.get.GetFieldMappingsResponse.FieldMappingMetadata) OpenSearchException(org.opensearch.OpenSearchException) Writeable(org.opensearch.common.io.stream.Writeable) Regex(org.opensearch.common.regex.Regex) ClusterState(org.opensearch.cluster.ClusterState) Map(java.util.Map) Inject(org.opensearch.common.inject.Inject) Collections.singletonMap(java.util.Collections.singletonMap) Predicate(java.util.function.Predicate) ClusterBlockLevel(org.opensearch.cluster.block.ClusterBlockLevel) Collection(java.util.Collection) IndicesService(org.opensearch.indices.IndicesService) ClusterBlockException(org.opensearch.cluster.block.ClusterBlockException) IOException(java.io.IOException) Mapper(org.opensearch.index.mapper.Mapper) ShardsIterator(org.opensearch.cluster.routing.ShardsIterator) IndexService(org.opensearch.index.IndexService) TransportService(org.opensearch.transport.TransportService) DocumentMapper(org.opensearch.index.mapper.DocumentMapper) XContentHelper(org.opensearch.common.xcontent.XContentHelper) MappingLookup(org.opensearch.index.mapper.MappingLookup) ShardId(org.opensearch.index.shard.ShardId) ActionFilters(org.opensearch.action.support.ActionFilters) ClusterService(org.opensearch.cluster.service.ClusterService) XContentType(org.opensearch.common.xcontent.XContentType) TypeMissingException(org.opensearch.indices.TypeMissingException) Collections(java.util.Collections) TransportSingleShardAction(org.opensearch.action.support.single.shard.TransportSingleShardAction) IndexNameExpressionResolver(org.opensearch.cluster.metadata.IndexNameExpressionResolver) IndexService(org.opensearch.index.IndexService) HashMap(java.util.HashMap) TypeMissingException(org.opensearch.indices.TypeMissingException) DocumentMapper(org.opensearch.index.mapper.DocumentMapper) Version(org.opensearch.Version) FieldMappingMetadata(org.opensearch.action.admin.indices.mapping.get.GetFieldMappingsResponse.FieldMappingMetadata) HashMap(java.util.HashMap) Map(java.util.Map) Collections.singletonMap(java.util.Collections.singletonMap)

Example 8 with Mapper

use of org.opensearch.index.mapper.Mapper in project OpenSearch by opensearch-project.

the class ShardGetService method innerGetLoadFromStoredFields.

private GetResult innerGetLoadFromStoredFields(String id, String[] storedFields, FetchSourceContext fetchSourceContext, Engine.GetResult get, MapperService mapperService) {
    assert get.exists() : "method should only be called if document could be retrieved";
    // check first if stored fields to be loaded don't contain an object field
    DocumentMapper docMapper = mapperService.documentMapper();
    if (storedFields != null) {
        for (String field : storedFields) {
            Mapper fieldMapper = docMapper.mappers().getMapper(field);
            if (fieldMapper == null) {
                if (docMapper.objectMappers().get(field) != null) {
                    // Only fail if we know it is a object field, missing paths / fields shouldn't fail.
                    throw new IllegalArgumentException("field [" + field + "] isn't a leaf field");
                }
            }
        }
    }
    Map<String, DocumentField> documentFields = null;
    Map<String, DocumentField> metadataFields = null;
    BytesReference source = null;
    DocIdAndVersion docIdAndVersion = get.docIdAndVersion();
    // force fetching source if we read from translog and need to recreate stored fields
    boolean forceSourceForComputingTranslogStoredFields = get.isFromTranslog() && storedFields != null && Stream.of(storedFields).anyMatch(f -> TranslogLeafReader.ALL_FIELD_NAMES.contains(f) == false);
    FieldsVisitor fieldVisitor = buildFieldsVisitors(storedFields, forceSourceForComputingTranslogStoredFields ? FetchSourceContext.FETCH_SOURCE : fetchSourceContext);
    if (fieldVisitor != null) {
        try {
            docIdAndVersion.reader.document(docIdAndVersion.docId, fieldVisitor);
        } catch (IOException e) {
            throw new OpenSearchException("Failed to get id [" + id + "]", e);
        }
        source = fieldVisitor.source();
        // in case we read from translog, some extra steps are needed to make _source consistent and to load stored fields
        if (get.isFromTranslog()) {
            // just make source consistent by reapplying source filters from mapping (possibly also nulling the source)
            if (forceSourceForComputingTranslogStoredFields == false) {
                try {
                    source = indexShard.mapperService().documentMapper().sourceMapper().applyFilters(source, null);
                } catch (IOException e) {
                    throw new OpenSearchException("Failed to reapply filters for [" + id + "] after reading from translog", e);
                }
            } else {
                // Slow path: recreate stored fields from original source
                assert source != null : "original source in translog must exist";
                SourceToParse sourceToParse = new SourceToParse(shardId.getIndexName(), MapperService.SINGLE_MAPPING_NAME, id, source, XContentHelper.xContentType(source), fieldVisitor.routing());
                ParsedDocument doc = indexShard.mapperService().documentMapper().parse(sourceToParse);
                assert doc.dynamicMappingsUpdate() == null : "mapping updates should not be required on already-indexed doc";
                // update special fields
                doc.updateSeqID(docIdAndVersion.seqNo, docIdAndVersion.primaryTerm);
                doc.version().setLongValue(docIdAndVersion.version);
                // retrieve stored fields from parsed doc
                fieldVisitor = buildFieldsVisitors(storedFields, fetchSourceContext);
                for (IndexableField indexableField : doc.rootDoc().getFields()) {
                    IndexableFieldType fieldType = indexableField.fieldType();
                    if (fieldType.stored()) {
                        FieldInfo fieldInfo = new FieldInfo(indexableField.name(), 0, false, false, false, IndexOptions.NONE, DocValuesType.NONE, -1, Collections.emptyMap(), 0, 0, 0, false);
                        StoredFieldVisitor.Status status = fieldVisitor.needsField(fieldInfo);
                        if (status == StoredFieldVisitor.Status.YES) {
                            if (indexableField.numericValue() != null) {
                                fieldVisitor.objectField(fieldInfo, indexableField.numericValue());
                            } else if (indexableField.binaryValue() != null) {
                                fieldVisitor.binaryField(fieldInfo, indexableField.binaryValue());
                            } else if (indexableField.stringValue() != null) {
                                fieldVisitor.objectField(fieldInfo, indexableField.stringValue());
                            }
                        } else if (status == StoredFieldVisitor.Status.STOP) {
                            break;
                        }
                    }
                }
                // retrieve source (with possible transformations, e.g. source filters
                source = fieldVisitor.source();
            }
        }
        // put stored fields into result objects
        if (!fieldVisitor.fields().isEmpty()) {
            fieldVisitor.postProcess(mapperService);
            documentFields = new HashMap<>();
            metadataFields = new HashMap<>();
            for (Map.Entry<String, List<Object>> entry : fieldVisitor.fields().entrySet()) {
                if (mapperService.isMetadataField(entry.getKey())) {
                    metadataFields.put(entry.getKey(), new DocumentField(entry.getKey(), entry.getValue()));
                } else {
                    documentFields.put(entry.getKey(), new DocumentField(entry.getKey(), entry.getValue()));
                }
            }
        }
    }
    if (source != null) {
        // apply request-level source filtering
        if (fetchSourceContext.fetchSource() == false) {
            source = null;
        } else if (fetchSourceContext.includes().length > 0 || fetchSourceContext.excludes().length > 0) {
            Map<String, Object> sourceAsMap;
            // TODO: The source might be parsed and available in the sourceLookup but that one uses unordered maps so different.
            // Do we care?
            Tuple<XContentType, Map<String, Object>> typeMapTuple = XContentHelper.convertToMap(source, true);
            XContentType sourceContentType = typeMapTuple.v1();
            sourceAsMap = typeMapTuple.v2();
            sourceAsMap = XContentMapValues.filter(sourceAsMap, fetchSourceContext.includes(), fetchSourceContext.excludes());
            try {
                source = BytesReference.bytes(XContentFactory.contentBuilder(sourceContentType).map(sourceAsMap));
            } catch (IOException e) {
                throw new OpenSearchException("Failed to get id [" + id + "] with includes/excludes set", e);
            }
        }
    }
    if (!fetchSourceContext.fetchSource()) {
        source = null;
    }
    if (source != null && get.isFromTranslog()) {
        // reapply source filters from mapping (possibly also nulling the source)
        try {
            source = docMapper.sourceMapper().applyFilters(source, null);
        } catch (IOException e) {
            throw new OpenSearchException("Failed to reapply filters for [" + id + "] after reading from translog", e);
        }
    }
    if (source != null && (fetchSourceContext.includes().length > 0 || fetchSourceContext.excludes().length > 0)) {
        Map<String, Object> sourceAsMap;
        // TODO: The source might parsed and available in the sourceLookup but that one uses unordered maps so different. Do we care?
        Tuple<XContentType, Map<String, Object>> typeMapTuple = XContentHelper.convertToMap(source, true);
        XContentType sourceContentType = typeMapTuple.v1();
        sourceAsMap = typeMapTuple.v2();
        sourceAsMap = XContentMapValues.filter(sourceAsMap, fetchSourceContext.includes(), fetchSourceContext.excludes());
        try {
            source = BytesReference.bytes(XContentFactory.contentBuilder(sourceContentType).map(sourceAsMap));
        } catch (IOException e) {
            throw new OpenSearchException("Failed to get id [" + id + "] with includes/excludes set", e);
        }
    }
    return new GetResult(shardId.getIndexName(), id, get.docIdAndVersion().seqNo, get.docIdAndVersion().primaryTerm, get.version(), get.exists(), source, documentFields, metadataFields);
}
Also used : CustomFieldsVisitor(org.opensearch.index.fieldvisitor.CustomFieldsVisitor) IdFieldMapper(org.opensearch.index.mapper.IdFieldMapper) BytesReference(org.opensearch.common.bytes.BytesReference) IndexableField(org.apache.lucene.index.IndexableField) Term(org.apache.lucene.index.Term) StoredFieldVisitor(org.apache.lucene.index.StoredFieldVisitor) HashMap(java.util.HashMap) MeanMetric(org.opensearch.common.metrics.MeanMetric) OpenSearchException(org.opensearch.OpenSearchException) SourceToParse(org.opensearch.index.mapper.SourceToParse) IndexShard(org.opensearch.index.shard.IndexShard) UNASSIGNED_SEQ_NO(org.opensearch.index.seqno.SequenceNumbers.UNASSIGNED_SEQ_NO) MapperService(org.opensearch.index.mapper.MapperService) IndexableFieldType(org.apache.lucene.index.IndexableFieldType) Map(java.util.Map) XContentFactory(org.opensearch.common.xcontent.XContentFactory) ParsedDocument(org.opensearch.index.mapper.ParsedDocument) FieldsVisitor(org.opensearch.index.fieldvisitor.FieldsVisitor) Versions(org.opensearch.common.lucene.uid.Versions) AbstractIndexShardComponent(org.opensearch.index.shard.AbstractIndexShardComponent) IOException(java.io.IOException) DocumentField(org.opensearch.common.document.DocumentField) Mapper(org.opensearch.index.mapper.Mapper) UNASSIGNED_PRIMARY_TERM(org.opensearch.index.seqno.SequenceNumbers.UNASSIGNED_PRIMARY_TERM) Nullable(org.opensearch.common.Nullable) SourceFieldMapper(org.opensearch.index.mapper.SourceFieldMapper) Tuple(org.opensearch.common.collect.Tuple) DocumentMapper(org.opensearch.index.mapper.DocumentMapper) XContentHelper(org.opensearch.common.xcontent.XContentHelper) Engine(org.opensearch.index.engine.Engine) TimeUnit(java.util.concurrent.TimeUnit) Sets(org.opensearch.common.util.set.Sets) VersionType(org.opensearch.index.VersionType) List(java.util.List) TranslogLeafReader(org.opensearch.index.engine.TranslogLeafReader) Stream(java.util.stream.Stream) DocValuesType(org.apache.lucene.index.DocValuesType) DocIdAndVersion(org.opensearch.common.lucene.uid.VersionsAndSeqNoResolver.DocIdAndVersion) IndexSettings(org.opensearch.index.IndexSettings) FieldInfo(org.apache.lucene.index.FieldInfo) CounterMetric(org.opensearch.common.metrics.CounterMetric) XContentType(org.opensearch.common.xcontent.XContentType) XContentMapValues(org.opensearch.common.xcontent.support.XContentMapValues) IndexOptions(org.apache.lucene.index.IndexOptions) RoutingFieldMapper(org.opensearch.index.mapper.RoutingFieldMapper) Collections(java.util.Collections) Uid(org.opensearch.index.mapper.Uid) FetchSourceContext(org.opensearch.search.fetch.subphase.FetchSourceContext) CustomFieldsVisitor(org.opensearch.index.fieldvisitor.CustomFieldsVisitor) FieldsVisitor(org.opensearch.index.fieldvisitor.FieldsVisitor) DocumentField(org.opensearch.common.document.DocumentField) IdFieldMapper(org.opensearch.index.mapper.IdFieldMapper) Mapper(org.opensearch.index.mapper.Mapper) SourceFieldMapper(org.opensearch.index.mapper.SourceFieldMapper) DocumentMapper(org.opensearch.index.mapper.DocumentMapper) RoutingFieldMapper(org.opensearch.index.mapper.RoutingFieldMapper) XContentType(org.opensearch.common.xcontent.XContentType) ParsedDocument(org.opensearch.index.mapper.ParsedDocument) StoredFieldVisitor(org.apache.lucene.index.StoredFieldVisitor) List(java.util.List) BytesReference(org.opensearch.common.bytes.BytesReference) DocumentMapper(org.opensearch.index.mapper.DocumentMapper) SourceToParse(org.opensearch.index.mapper.SourceToParse) IOException(java.io.IOException) IndexableField(org.apache.lucene.index.IndexableField) DocIdAndVersion(org.opensearch.common.lucene.uid.VersionsAndSeqNoResolver.DocIdAndVersion) IndexableFieldType(org.apache.lucene.index.IndexableFieldType) OpenSearchException(org.opensearch.OpenSearchException) HashMap(java.util.HashMap) Map(java.util.Map) FieldInfo(org.apache.lucene.index.FieldInfo) Tuple(org.opensearch.common.collect.Tuple)

Example 9 with Mapper

use of org.opensearch.index.mapper.Mapper in project OpenSearch by opensearch-project.

the class CategoryContextMappingTests method testIndexingWithMixedTypeContextList.

public void testIndexingWithMixedTypeContextList() throws Exception {
    String mapping = Strings.toString(jsonBuilder().startObject().startObject("type1").startObject("properties").startObject("completion").field("type", "completion").startArray("contexts").startObject().field("name", "ctx").field("type", "category").endObject().endArray().endObject().endObject().endObject().endObject());
    DocumentMapper defaultMapper = createIndex("test").mapperService().documentMapperParser().parse("type1", new CompressedXContent(mapping));
    Mapper fieldMapper = defaultMapper.mappers().getMapper("completion");
    ParsedDocument parsedDocument = defaultMapper.parse(new SourceToParse("test", "type1", "1", BytesReference.bytes(jsonBuilder().startObject().startObject("completion").array("input", "suggestion5", "suggestion6", "suggestion7").startObject("contexts").array("ctx", "ctx1", true, 100).endObject().field("weight", 5).endObject().endObject()), XContentType.JSON));
    IndexableField[] fields = parsedDocument.rootDoc().getFields(fieldMapper.name());
    assertContextSuggestFields(fields, 3);
}
Also used : IndexableField(org.apache.lucene.index.IndexableField) KeywordFieldMapper(org.opensearch.index.mapper.KeywordFieldMapper) Mapper(org.opensearch.index.mapper.Mapper) DocumentMapper(org.opensearch.index.mapper.DocumentMapper) TextFieldMapper(org.opensearch.index.mapper.TextFieldMapper) ParsedDocument(org.opensearch.index.mapper.ParsedDocument) DocumentMapper(org.opensearch.index.mapper.DocumentMapper) CompressedXContent(org.opensearch.common.compress.CompressedXContent) SourceToParse(org.opensearch.index.mapper.SourceToParse) Matchers.containsString(org.hamcrest.Matchers.containsString)

Example 10 with Mapper

use of org.opensearch.index.mapper.Mapper in project OpenSearch by opensearch-project.

the class CategoryContextMappingTests method testIndexingWithNoContexts.

public void testIndexingWithNoContexts() throws Exception {
    String mapping = Strings.toString(jsonBuilder().startObject().startObject("type1").startObject("properties").startObject("completion").field("type", "completion").startArray("contexts").startObject().field("name", "ctx").field("type", "category").endObject().endArray().endObject().endObject().endObject().endObject());
    DocumentMapper defaultMapper = createIndex("test").mapperService().documentMapperParser().parse("type1", new CompressedXContent(mapping));
    Mapper fieldMapper = defaultMapper.mappers().getMapper("completion");
    ParsedDocument parsedDocument = defaultMapper.parse(new SourceToParse("test", "type1", "1", BytesReference.bytes(jsonBuilder().startObject().startArray("completion").startObject().array("input", "suggestion1", "suggestion2").field("weight", 3).endObject().startObject().array("input", "suggestion3", "suggestion4").field("weight", 4).endObject().startObject().array("input", "suggestion5", "suggestion6", "suggestion7").field("weight", 5).endObject().endArray().endObject()), XContentType.JSON));
    IndexableField[] fields = parsedDocument.rootDoc().getFields(fieldMapper.name());
    assertContextSuggestFields(fields, 7);
}
Also used : IndexableField(org.apache.lucene.index.IndexableField) KeywordFieldMapper(org.opensearch.index.mapper.KeywordFieldMapper) Mapper(org.opensearch.index.mapper.Mapper) DocumentMapper(org.opensearch.index.mapper.DocumentMapper) TextFieldMapper(org.opensearch.index.mapper.TextFieldMapper) ParsedDocument(org.opensearch.index.mapper.ParsedDocument) DocumentMapper(org.opensearch.index.mapper.DocumentMapper) CompressedXContent(org.opensearch.common.compress.CompressedXContent) SourceToParse(org.opensearch.index.mapper.SourceToParse) Matchers.containsString(org.hamcrest.Matchers.containsString)

Aggregations

Mapper (org.opensearch.index.mapper.Mapper)13 DocumentMapper (org.opensearch.index.mapper.DocumentMapper)10 IndexableField (org.apache.lucene.index.IndexableField)8 KeywordFieldMapper (org.opensearch.index.mapper.KeywordFieldMapper)8 ParsedDocument (org.opensearch.index.mapper.ParsedDocument)8 SourceToParse (org.opensearch.index.mapper.SourceToParse)8 TextFieldMapper (org.opensearch.index.mapper.TextFieldMapper)8 Matchers.containsString (org.hamcrest.Matchers.containsString)7 CompressedXContent (org.opensearch.common.compress.CompressedXContent)7 HashMap (java.util.HashMap)4 IOException (java.io.IOException)3 Map (java.util.Map)3 Settings (org.opensearch.common.settings.Settings)3 IndexSettings (org.opensearch.index.IndexSettings)3 ContentPath (org.opensearch.index.mapper.ContentPath)3 Collections (java.util.Collections)2 Collections.singletonMap (java.util.Collections.singletonMap)2 OpenSearchException (org.opensearch.OpenSearchException)2 FieldMappingMetadata (org.opensearch.action.admin.indices.mapping.get.GetFieldMappingsResponse.FieldMappingMetadata)2 BytesReference (org.opensearch.common.bytes.BytesReference)2