elasticsearch初始化之配置文件读取

来源:互联网 发布:域名和服务器的关系 编辑:程序博客网 时间:2024/05/17 22:11

public static Tuple<Settings, Environment> prepareSettings(Settings pSettings, boolean loadConfigSettings) {        // ignore this prefixes when getting properties from es. and elasticsearch.        String[] ignorePrefixes = new String[]{"es.default.", "elasticsearch.default."};        boolean useSystemProperties = !pSettings.getAsBoolean("config.ignore_system_properties", false);        // just create enough settings to build the environment        ImmutableSettings.Builder settingsBuilder = settingsBuilder().put(pSettings);        if (useSystemProperties) {            settingsBuilder.putProperties("elasticsearch.default.", System.getProperties())                    .putProperties("es.default.", System.getProperties())                    .putProperties("elasticsearch.", System.getProperties(), ignorePrefixes)                    .putProperties("es.", System.getProperties(), ignorePrefixes);        }        settingsBuilder.replacePropertyPlaceholders();        Environment environment = new Environment(settingsBuilder.build());        if (loadConfigSettings) {            boolean loadFromEnv = true;            if (useSystemProperties) {                // if its default, then load it, but also load form env                if (Strings.hasText(System.getProperty("es.default.config"))) {                    loadFromEnv = true;                    settingsBuilder.loadFromUrl(environment.resolveConfig(System.getProperty("es.default.config")));                }                // if explicit, just load it and don't load from env                if (Strings.hasText(System.getProperty("es.config"))) {                    loadFromEnv = false;                    settingsBuilder.loadFromUrl(environment.resolveConfig(System.getProperty("es.config")));                }                if (Strings.hasText(System.getProperty("elasticsearch.config"))) {                    loadFromEnv = false;                    settingsBuilder.loadFromUrl(environment.resolveConfig(System.getProperty("elasticsearch.config")));                }            }            if (loadFromEnv) {                try {                    settingsBuilder.loadFromUrl(environment.resolveConfig("elasticsearch.yml"));                } catch (FailedToResolveConfigException e) {                    // ignore                } catch (NoClassDefFoundError e) {                    // ignore, no yaml                }                try {                    settingsBuilder.loadFromUrl(environment.resolveConfig("elasticsearch.json"));                } catch (FailedToResolveConfigException e) {                    // ignore                }                try {                    settingsBuilder.loadFromUrl(environment.resolveConfig("elasticsearch.properties"));                } catch (FailedToResolveConfigException e) {                    // ignore                }            }        }        settingsBuilder.put(pSettings);        if (useSystemProperties) {            settingsBuilder.putProperties("elasticsearch.", System.getProperties(), ignorePrefixes)                    .putProperties("es.", System.getProperties(), ignorePrefixes);        }        settingsBuilder.replacePropertyPlaceholders();        // allow to force set properties based on configuration of the settings provided        for (Map.Entry<String, String> entry : pSettings.getAsMap().entrySet()) {            String setting = entry.getKey();            if (setting.startsWith("force.")) {                settingsBuilder.remove(setting);                settingsBuilder.put(setting.substring(".force".length()), entry.getValue());            }        }        settingsBuilder.replacePropertyPlaceholders();        // generate the name        if (settingsBuilder.get("name") == null) {            String name = System.getProperty("name");            if (name == null || name.isEmpty()) {                name = settingsBuilder.get("node.name");                if (name == null || name.isEmpty()) {                    name = Names.randomNodeName(environment.resolveConfig("names.txt"));                }            }            if (name != null) {                settingsBuilder.put("name", name);            }        }        // put the cluster name        if (settingsBuilder.get(ClusterName.SETTING) == null) {            settingsBuilder.put(ClusterName.SETTING, ClusterName.DEFAULT.value());        }        Settings v1 = settingsBuilder.build();        environment = new Environment(v1);        // put back the env settings        settingsBuilder = settingsBuilder().put(v1);        // we put back the path.logs so we can use it in the logging configuration file        settingsBuilder.put("path.logs", cleanPath(environment.logsFile().getAbsolutePath()));        v1 = settingsBuilder.build();        return new Tuple<>(v1, environment);    }

elasticsearch初始化
时将elasticsearch.yml文件读入并解析,获取初始化配置信息。将配置后的信息保存在 Tuple<Settings, Environment> tuple结构中。


0 0