private DocIndexMetaData buildDocIndexMetaDataFromTemplate(String index, String templateName) { IndexTemplateMetaData indexTemplateMetaData = metaData.getTemplates().get(templateName); DocIndexMetaData docIndexMetaData; try { IndexMetaData.Builder builder = new IndexMetaData.Builder(index); builder.putMapping( Constants.DEFAULT_MAPPING_TYPE, indexTemplateMetaData.getMappings().get(Constants.DEFAULT_MAPPING_TYPE).toString()); Settings settings = indexTemplateMetaData.settings(); builder.settings(settings); // default values builder.numberOfShards(settings.getAsInt(SETTING_NUMBER_OF_SHARDS, 5)); builder.numberOfReplicas(settings.getAsInt(SETTING_NUMBER_OF_REPLICAS, 1)); docIndexMetaData = new DocIndexMetaData(functions, builder.build(), ident); } catch (IOException e) { throw new UnhandledServerException("Unable to build DocIndexMetaData from template", e); } return docIndexMetaData.build(); }
private DocIndexMetaData docIndexMetaData() { DocIndexMetaData docIndexMetaData; String templateName = PartitionName.templateName(ident.schema(), ident.name()); boolean createdFromTemplate = false; if (metaData.getTemplates().containsKey(templateName)) { docIndexMetaData = buildDocIndexMetaDataFromTemplate(ident.indexName(), templateName); createdFromTemplate = true; concreteIndices = metaData.concreteIndices(IndicesOptions.lenientExpandOpen(), ident.indexName()); } else { try { concreteIndices = metaData.concreteIndices(IndicesOptions.strictExpandOpen(), ident.indexName()); if (concreteIndices.length == 0) { // no matching index found throw new TableUnknownException(ident); } docIndexMetaData = buildDocIndexMetaData(concreteIndices[0]); } catch (IndexMissingException ex) { throw new TableUnknownException(ident.fqn(), ex); } } if ((!createdFromTemplate && concreteIndices.length == 1) || !checkAliasSchema) { return docIndexMetaData; } for (int i = 0; i < concreteIndices.length; i++) { try { docIndexMetaData = docIndexMetaData.merge( buildDocIndexMetaData(concreteIndices[i]), transportPutIndexTemplateAction, createdFromTemplate); } catch (IOException e) { throw new UnhandledServerException("Unable to merge/build new DocIndexMetaData", e); } } return docIndexMetaData; }
/** * As of 2.0 we require units for time and byte-sized settings. This methods adds default units to * any cluster settings that don't specify a unit. */ public static MetaData addDefaultUnitsIfNeeded(ESLogger logger, MetaData metaData) { Settings.Builder newPersistentSettings = null; for (Map.Entry<String, String> ent : metaData.persistentSettings().getAsMap().entrySet()) { String settingName = ent.getKey(); String settingValue = ent.getValue(); if (CLUSTER_BYTES_SIZE_SETTINGS.contains(settingName)) { try { Long.parseLong(settingValue); } catch (NumberFormatException nfe) { continue; } // It's a naked number that previously would be interpreted as default unit (bytes); now we // add it: logger.warn( "byte-sized cluster setting [{}] with value [{}] is missing units; assuming default units (b) but in future versions this will be a hard error", settingName, settingValue); if (newPersistentSettings == null) { newPersistentSettings = Settings.builder(); newPersistentSettings.put(metaData.persistentSettings()); } newPersistentSettings.put(settingName, settingValue + "b"); } if (CLUSTER_TIME_SETTINGS.contains(settingName)) { try { Long.parseLong(settingValue); } catch (NumberFormatException nfe) { continue; } // It's a naked number that previously would be interpreted as default unit (ms); now we add // it: logger.warn( "time cluster setting [{}] with value [{}] is missing units; assuming default units (ms) but in future versions this will be a hard error", settingName, settingValue); if (newPersistentSettings == null) { newPersistentSettings = Settings.builder(); newPersistentSettings.put(metaData.persistentSettings()); } newPersistentSettings.put(settingName, settingValue + "ms"); } } if (newPersistentSettings != null) { return new MetaData( metaData.clusterUUID(), metaData.version(), metaData.transientSettings(), newPersistentSettings.build(), metaData.getIndices(), metaData.getTemplates(), metaData.getCustoms(), metaData.concreteAllIndices(), metaData.concreteAllOpenIndices(), metaData.concreteAllClosedIndices(), metaData.getAliasAndIndexLookup()); } else { // No changes: return metaData; } }