package org.xbib.elasticsearch;
import org.elasticsearch.Version;
import org.elasticsearch.cluster.metadata.IndexMetaData;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.NamedXContentRegistry;
import org.elasticsearch.env.Environment;
import org.elasticsearch.index.IndexSettings;
import org.elasticsearch.index.analysis.AnalysisRegistry;
import org.elasticsearch.index.analysis.AnalyzerProvider;
import org.elasticsearch.index.analysis.CharFilterFactory;
import org.elasticsearch.index.analysis.IndexAnalyzers;
import org.elasticsearch.index.analysis.TokenFilterFactory;
import org.elasticsearch.index.analysis.TokenizerFactory;
import org.elasticsearch.index.mapper.DocumentMapperParser;
import org.elasticsearch.index.mapper.MapperService;
import org.elasticsearch.index.similarity.SimilarityService;
import org.elasticsearch.indices.IndicesModule;
import org.elasticsearch.indices.analysis.AnalysisModule;
import org.elasticsearch.indices.mapper.MapperRegistry;
import org.xbib.elasticsearch.plugin.reference.ReferencePlugin;
import java.io.IOException;
import java.util.Collections;
import java.util.Map;
/**
*
*/
public class MapperTestUtils {
public static DocumentMapperParser newDocumentMapperParser(String index) throws IOException {
return newDocumentMapperParser(Settings.EMPTY, index);
}
public static DocumentMapperParser newDocumentMapperParser(Settings customSettings, String index) throws IOException {
Settings settings = Settings.builder()
.put("path.home", System.getProperty("path.home", System.getProperty("user.dir")))
.put(IndexMetaData.SETTING_VERSION_CREATED, Version.CURRENT)
.put(customSettings)
.build();
Environment environment = new Environment(settings);
ReferencePlugin referencePlugin = new ReferencePlugin();
AnalysisModule analysisModule = new AnalysisModule(environment, Collections.emptyList());
IndicesModule indicesModule = new IndicesModule(Collections.singletonList(referencePlugin));
MapperRegistry mapperRegistry = indicesModule.getMapperRegistry();
AnalysisRegistry analysisRegistry = analysisModule.getAnalysisRegistry();
IndexMetaData indexMetaData = IndexMetaData.builder(index)
.settings(settings)
.numberOfShards(1)
.numberOfReplicas(1)
.build();
IndexSettings indexSettings = new IndexSettings(indexMetaData, settings);
SimilarityService similarityService = new SimilarityService(indexSettings, SimilarityService.BUILT_IN);
Map<String, CharFilterFactory> charFilterFactoryMap = analysisRegistry.buildCharFilterFactories(indexSettings);
Map<String, TokenFilterFactory> tokenFilterFactoryMap = analysisRegistry.buildTokenFilterFactories(indexSettings);
Map<String, TokenizerFactory> tokenizerFactoryMap = analysisRegistry.buildTokenizerFactories(indexSettings);
Map<String, AnalyzerProvider<?>> analyzerProviderMap = analysisRegistry.buildAnalyzerFactories(indexSettings);
Map<String, AnalyzerProvider<?>> normalizerProviderMap = analysisRegistry.buildNormalizerFactories(indexSettings);
IndexAnalyzers indexAnalyzers = analysisRegistry.build(indexSettings,
analyzerProviderMap,
normalizerProviderMap,
tokenizerFactoryMap,
charFilterFactoryMap,
tokenFilterFactoryMap);
MapperService mapperService = new MapperService(indexSettings, indexAnalyzers, NamedXContentRegistry.EMPTY,
similarityService, mapperRegistry, null);
return new DocumentMapperParser(indexSettings, mapperService, indexAnalyzers, NamedXContentRegistry.EMPTY,
similarityService, mapperRegistry, null);
}
}