以编程方式从ElasticSearch获取所有分析器

时间:2017-06-16 19:56:47

标签: java elasticsearch

是否有一种优雅的方式可以通过编程方式获取ElasticSearch 5.3或5.4的所有分析器? 我已经使用了一些带有Java驱动程序的Java代码,但这不是一个干净的解决方案:

public Map<String, AnalyzerProvider<?>> extractAllIndices() throws IOException {
    Settings settings = Settings.builder()
            .put(Environment.PATH_HOME_SETTING.getKey(), System.getProperty("user.home"))
            .put(IndexMetaData.SETTING_VERSION_CREATED, 1)
            .put(IndexMetaData.SETTING_VERSION_CREATED_STRING, "1")
            .put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, 1)
            .put(IndexMetaData.SETTING_NUMBER_OF_REPLICAS, 1)
            .build();
    Environment environment = new Environment(settings);
    AnalysisModule module = new AnalysisModule(environment, Collections.emptyList());
    IndexSettings indexSettings = new IndexSettings(new IndexMetaData.Builder("test")
            .settings(settings)
            .build(),
            settings);
    return module.getAnalysisRegistry().buildAnalyzerFactories(indexSettings);
}

此代码检索驱动程序内部使用的所有分析程序。但这相当糟糕。

这些是我使用上面的代码在5.3驱动程序中找到的所有分析器:

standard
german
pattern
irish
sorani
simple
standard_html_strip
hungarian
norwegian
dutch
chinese
default
arabic
english
fingerprint
portuguese
keyword
romanian
french
czech
greek
indonesian
swedish
spanish
danish
russian
cjk
armenian
basque
italian
lithuanian
thai
persian
catalan
finnish
classic
stop
brazilian
turkish
hindi
snowball
bulgarian
whitespace
galician
latvian

0 个答案:

没有答案
相关问题