Search in sources :

Example 1 with IndicesModule

use of org.opensearch.indices.IndicesModule in project OpenSearch by opensearch-project.

the class RolloverRequestTests method setUp.

@Override
@Before
public void setUp() throws Exception {
    super.setUp();
    writeableRegistry = new NamedWriteableRegistry(new IndicesModule(Collections.emptyList()).getNamedWriteables());
}
Also used : NamedWriteableRegistry(org.opensearch.common.io.stream.NamedWriteableRegistry) IndicesModule(org.opensearch.indices.IndicesModule) Before(org.junit.Before)

Example 2 with IndicesModule

use of org.opensearch.indices.IndicesModule in project OpenSearch by opensearch-project.

the class ShardValidateQueryRequestTests method setUp.

public void setUp() throws Exception {
    super.setUp();
    IndicesModule indicesModule = new IndicesModule(Collections.emptyList());
    SearchModule searchModule = new SearchModule(Settings.EMPTY, Collections.emptyList());
    List<NamedWriteableRegistry.Entry> entries = new ArrayList<>();
    entries.addAll(indicesModule.getNamedWriteables());
    entries.addAll(searchModule.getNamedWriteables());
    namedWriteableRegistry = new NamedWriteableRegistry(entries);
}
Also used : NamedWriteableRegistry(org.opensearch.common.io.stream.NamedWriteableRegistry) IndicesModule(org.opensearch.indices.IndicesModule) ArrayList(java.util.ArrayList) SearchModule(org.opensearch.search.SearchModule)

Example 3 with IndicesModule

use of org.opensearch.indices.IndicesModule in project OpenSearch by opensearch-project.

the class AggregatorTestCase method testSupportedFieldTypes.

/**
 * This test will validate that an aggregator succeeds or fails to run against all the field types
 * that are registered in {@link IndicesModule} (e.g. all the core field types).  An aggregator
 * is provided by the implementor class, and it is executed against each field type in turn.  If
 * an exception is thrown when the field is supported, that will fail the test.  Similarly, if
 * an exception _is not_ thrown when a field is unsupported, that will also fail the test.
 *
 * Exception types/messages are not currently checked, just presence/absence of an exception.
 */
public void testSupportedFieldTypes() throws IOException {
    MapperRegistry mapperRegistry = new IndicesModule(Collections.emptyList()).getMapperRegistry();
    Settings settings = Settings.builder().put("index.version.created", Version.CURRENT.id).build();
    String fieldName = "typeTestFieldName";
    List<ValuesSourceType> supportedVSTypes = getSupportedValuesSourceTypes();
    List<String> unsupportedMappedFieldTypes = unsupportedMappedFieldTypes();
    if (supportedVSTypes.isEmpty()) {
        // If the test says it doesn't support any VStypes, it has not been converted yet so skip
        return;
    }
    for (Map.Entry<String, Mapper.TypeParser> mappedType : mapperRegistry.getMapperParsers().entrySet()) {
        // Some field types should not be tested, or require more work and are not ready yet
        if (TYPE_TEST_DENYLIST.contains(mappedType.getKey())) {
            continue;
        }
        Map<String, Object> source = new HashMap<>();
        source.put("type", mappedType.getKey());
        // Text is the only field that doesn't support DVs, instead FD
        if (mappedType.getKey().equals(TextFieldMapper.CONTENT_TYPE) == false) {
            source.put("doc_values", "true");
        }
        Mapper.Builder builder = mappedType.getValue().parse(fieldName, source, new MockParserContext());
        FieldMapper mapper = (FieldMapper) builder.build(new BuilderContext(settings, new ContentPath()));
        MappedFieldType fieldType = mapper.fieldType();
        // Non-aggregatable fields are not testable (they will throw an error on all aggs anyway), so skip
        if (fieldType.isAggregatable() == false) {
            continue;
        }
        try (Directory directory = newDirectory()) {
            RandomIndexWriter indexWriter = new RandomIndexWriter(random(), directory);
            writeTestDoc(fieldType, fieldName, indexWriter);
            indexWriter.close();
            try (IndexReader indexReader = DirectoryReader.open(directory)) {
                IndexSearcher indexSearcher = newIndexSearcher(indexReader);
                AggregationBuilder aggregationBuilder = createAggBuilderForTypeTest(fieldType, fieldName);
                ValuesSourceType vst = fieldToVST(fieldType);
                // TODO in the future we can make this more explicit with expectThrows(), when the exceptions are standardized
                AssertionError failure = null;
                try {
                    searchAndReduce(indexSearcher, new MatchAllDocsQuery(), aggregationBuilder, fieldType);
                    if (supportedVSTypes.contains(vst) == false || unsupportedMappedFieldTypes.contains(fieldType.typeName())) {
                        failure = new AssertionError("Aggregator [" + aggregationBuilder.getType() + "] should not support field type [" + fieldType.typeName() + "] but executing against the field did not throw an exception");
                    }
                } catch (Exception | AssertionError e) {
                    if (supportedVSTypes.contains(vst) && unsupportedMappedFieldTypes.contains(fieldType.typeName()) == false) {
                        failure = new AssertionError("Aggregator [" + aggregationBuilder.getType() + "] supports field type [" + fieldType.typeName() + "] but executing against the field threw an exception: [" + e.getMessage() + "]", e);
                    }
                }
                if (failure != null) {
                    throw failure;
                }
            }
        }
    }
}
Also used : AssertingIndexSearcher(org.apache.lucene.search.AssertingIndexSearcher) ContextIndexSearcher(org.opensearch.search.internal.ContextIndexSearcher) IndexSearcher(org.apache.lucene.search.IndexSearcher) IndicesModule(org.opensearch.indices.IndicesModule) NestedAggregationBuilder(org.opensearch.search.aggregations.bucket.nested.NestedAggregationBuilder) HashMap(java.util.HashMap) Mockito.anyString(org.mockito.Mockito.anyString) KeywordFieldMapper(org.opensearch.index.mapper.KeywordFieldMapper) FieldAliasMapper(org.opensearch.index.mapper.FieldAliasMapper) GeoPointFieldMapper(org.opensearch.index.mapper.GeoPointFieldMapper) RangeFieldMapper(org.opensearch.index.mapper.RangeFieldMapper) GeoShapeFieldMapper(org.opensearch.index.mapper.GeoShapeFieldMapper) TextFieldMapper(org.opensearch.index.mapper.TextFieldMapper) CompletionFieldMapper(org.opensearch.index.mapper.CompletionFieldMapper) ObjectMapper(org.opensearch.index.mapper.ObjectMapper) BinaryFieldMapper(org.opensearch.index.mapper.BinaryFieldMapper) NumberFieldMapper(org.opensearch.index.mapper.NumberFieldMapper) FieldMapper(org.opensearch.index.mapper.FieldMapper) Mapper(org.opensearch.index.mapper.Mapper) DateFieldMapper(org.opensearch.index.mapper.DateFieldMapper) MappedFieldType(org.opensearch.index.mapper.MappedFieldType) Settings(org.opensearch.common.settings.Settings) IndexSettings(org.opensearch.index.IndexSettings) Directory(org.apache.lucene.store.Directory) CoreValuesSourceType(org.opensearch.search.aggregations.support.CoreValuesSourceType) ValuesSourceType(org.opensearch.search.aggregations.support.ValuesSourceType) ContentPath(org.opensearch.index.mapper.ContentPath) MatchAllDocsQuery(org.apache.lucene.search.MatchAllDocsQuery) IOException(java.io.IOException) MapperRegistry(org.opensearch.indices.mapper.MapperRegistry) IndexReader(org.apache.lucene.index.IndexReader) BuilderContext(org.opensearch.index.mapper.Mapper.BuilderContext) Map(java.util.Map) HashMap(java.util.HashMap) Collections.singletonMap(java.util.Collections.singletonMap) Collections.emptyMap(java.util.Collections.emptyMap) KeywordFieldMapper(org.opensearch.index.mapper.KeywordFieldMapper) GeoPointFieldMapper(org.opensearch.index.mapper.GeoPointFieldMapper) RangeFieldMapper(org.opensearch.index.mapper.RangeFieldMapper) GeoShapeFieldMapper(org.opensearch.index.mapper.GeoShapeFieldMapper) TextFieldMapper(org.opensearch.index.mapper.TextFieldMapper) CompletionFieldMapper(org.opensearch.index.mapper.CompletionFieldMapper) BinaryFieldMapper(org.opensearch.index.mapper.BinaryFieldMapper) NumberFieldMapper(org.opensearch.index.mapper.NumberFieldMapper) FieldMapper(org.opensearch.index.mapper.FieldMapper) DateFieldMapper(org.opensearch.index.mapper.DateFieldMapper) RandomIndexWriter(org.apache.lucene.index.RandomIndexWriter)

Example 4 with IndicesModule

use of org.opensearch.indices.IndicesModule in project OpenSearch by opensearch-project.

the class ExplainRequestTests method setUp.

public void setUp() throws Exception {
    super.setUp();
    IndicesModule indicesModule = new IndicesModule(Collections.emptyList());
    SearchModule searchModule = new SearchModule(Settings.EMPTY, Collections.emptyList());
    List<NamedWriteableRegistry.Entry> entries = new ArrayList<>();
    entries.addAll(indicesModule.getNamedWriteables());
    entries.addAll(searchModule.getNamedWriteables());
    namedWriteableRegistry = new NamedWriteableRegistry(entries);
}
Also used : NamedWriteableRegistry(org.opensearch.common.io.stream.NamedWriteableRegistry) IndicesModule(org.opensearch.indices.IndicesModule) ArrayList(java.util.ArrayList) SearchModule(org.opensearch.search.SearchModule)

Example 5 with IndicesModule

use of org.opensearch.indices.IndicesModule in project OpenSearch by opensearch-project.

the class MapperServiceTestCase method createMapperService.

/**
 * Create a {@link MapperService} like we would for an index.
 */
protected final MapperService createMapperService(Version version, XContentBuilder mapping) throws IOException {
    IndexMetadata meta = IndexMetadata.builder("index").settings(Settings.builder().put("index.version.created", version)).numberOfReplicas(0).numberOfShards(1).build();
    IndexSettings indexSettings = new IndexSettings(meta, getIndexSettings());
    MapperRegistry mapperRegistry = new IndicesModule(getPlugins().stream().filter(p -> p instanceof MapperPlugin).map(p -> (MapperPlugin) p).collect(toList())).getMapperRegistry();
    ScriptModule scriptModule = new ScriptModule(Settings.EMPTY, getPlugins().stream().filter(p -> p instanceof ScriptPlugin).map(p -> (ScriptPlugin) p).collect(toList()));
    ScriptService scriptService = new ScriptService(getIndexSettings(), scriptModule.engines, scriptModule.contexts);
    SimilarityService similarityService = new SimilarityService(indexSettings, scriptService, emptyMap());
    MapperService mapperService = new MapperService(indexSettings, createIndexAnalyzers(indexSettings), xContentRegistry(), similarityService, mapperRegistry, () -> {
        throw new UnsupportedOperationException();
    }, () -> true, scriptService);
    merge(mapperService, mapping);
    return mapperService;
}
Also used : IndicesModule(org.opensearch.indices.IndicesModule) BytesReference(org.opensearch.common.bytes.BytesReference) IndexMetadata(org.opensearch.cluster.metadata.IndexMetadata) ScriptModule(org.opensearch.script.ScriptModule) SimilarityService(org.opensearch.index.similarity.SimilarityService) ToXContent(org.opensearch.common.xcontent.ToXContent) CheckedConsumer(org.opensearch.common.CheckedConsumer) CompressedXContent(org.opensearch.common.compress.CompressedXContent) MapperPlugin(org.opensearch.plugins.MapperPlugin) Version(org.opensearch.Version) AnalyzerScope(org.opensearch.index.analysis.AnalyzerScope) MapperRegistry(org.opensearch.indices.mapper.MapperRegistry) Directory(org.apache.lucene.store.Directory) XContentFactory(org.opensearch.common.xcontent.XContentFactory) Collections.singletonMap(java.util.Collections.singletonMap) Mockito.anyString(org.mockito.Mockito.anyString) ScriptService(org.opensearch.script.ScriptService) Collections.emptyMap(java.util.Collections.emptyMap) NamedAnalyzer(org.opensearch.index.analysis.NamedAnalyzer) ScriptPlugin(org.opensearch.plugins.ScriptPlugin) Collections.emptyList(java.util.Collections.emptyList) OpenSearchTestCase(org.opensearch.test.OpenSearchTestCase) Collection(java.util.Collection) Settings(org.opensearch.common.settings.Settings) IOException(java.io.IOException) Mockito.when(org.mockito.Mockito.when) Plugin(org.opensearch.plugins.Plugin) SearchLookup(org.opensearch.search.lookup.SearchLookup) XContentBuilder(org.opensearch.common.xcontent.XContentBuilder) Collectors.toList(java.util.stream.Collectors.toList) StandardAnalyzer(org.apache.lucene.analysis.standard.StandardAnalyzer) BytesArray(org.opensearch.common.bytes.BytesArray) JsonXContent(org.opensearch.common.xcontent.json.JsonXContent) IndexSettings(org.opensearch.index.IndexSettings) QueryShardContext(org.opensearch.index.query.QueryShardContext) XContentType(org.opensearch.common.xcontent.XContentType) RandomIndexWriter(org.apache.lucene.index.RandomIndexWriter) Mockito.any(org.mockito.Mockito.any) IndexWriterConfig(org.apache.lucene.index.IndexWriterConfig) Collections(java.util.Collections) IndexReader(org.apache.lucene.index.IndexReader) IndexAnalyzers(org.opensearch.index.analysis.IndexAnalyzers) Mockito.mock(org.mockito.Mockito.mock) ScriptService(org.opensearch.script.ScriptService) ScriptModule(org.opensearch.script.ScriptModule) IndicesModule(org.opensearch.indices.IndicesModule) MapperRegistry(org.opensearch.indices.mapper.MapperRegistry) MapperPlugin(org.opensearch.plugins.MapperPlugin) IndexSettings(org.opensearch.index.IndexSettings) SimilarityService(org.opensearch.index.similarity.SimilarityService) IndexMetadata(org.opensearch.cluster.metadata.IndexMetadata) ScriptPlugin(org.opensearch.plugins.ScriptPlugin)

Aggregations

IndicesModule (org.opensearch.indices.IndicesModule)8 NamedWriteableRegistry (org.opensearch.common.io.stream.NamedWriteableRegistry)5 ArrayList (java.util.ArrayList)4 Settings (org.opensearch.common.settings.Settings)3 SearchModule (org.opensearch.search.SearchModule)3 IOException (java.io.IOException)2 Collections.emptyMap (java.util.Collections.emptyMap)2 Collections.singletonMap (java.util.Collections.singletonMap)2 IndexReader (org.apache.lucene.index.IndexReader)2 RandomIndexWriter (org.apache.lucene.index.RandomIndexWriter)2 Directory (org.apache.lucene.store.Directory)2 Mockito.anyString (org.mockito.Mockito.anyString)2 NamedXContentRegistry (org.opensearch.common.xcontent.NamedXContentRegistry)2 IndexSettings (org.opensearch.index.IndexSettings)2 ScriptService (org.opensearch.script.ScriptService)2 Collection (java.util.Collection)1 Collections (java.util.Collections)1 Collections.emptyList (java.util.Collections.emptyList)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1