final ImmutableOpenMap<String, AliasMetaData> aliases = indexMetaData.getAliases();
public AliasMetaData getFirstAliasMetaData() { return referenceIndexMetaDatas.get(0).getAliases().get(aliasName); }
public void computeAndValidateWriteIndex() { List<IndexMetaData> writeIndices = referenceIndexMetaDatas.stream() .filter(idxMeta -> Boolean.TRUE.equals(idxMeta.getAliases().get(aliasName).writeIndex())) .collect(Collectors.toList()); if (writeIndices.isEmpty() && referenceIndexMetaDatas.size() == 1 && referenceIndexMetaDatas.get(0).getAliases().get(aliasName).writeIndex() == null) { writeIndices.add(referenceIndexMetaDatas.get(0)); } if (writeIndices.size() == 1) { writeIndex.set(writeIndices.get(0)); } else if (writeIndices.size() > 1) { List<String> writeIndicesStrings = writeIndices.stream() .map(i -> i.getIndex().getName()).collect(Collectors.toList()); throw new IllegalStateException("alias [" + aliasName + "] has more than one write index [" + Strings.collectionToCommaDelimitedString(writeIndicesStrings) + "]"); } } }
public boolean equalsAliases(MetaData other) { for (ObjectCursor<IndexMetaData> cursor : other.indices().values()) { IndexMetaData otherIndex = cursor.value; IndexMetaData thisIndex = index(otherIndex.getIndex()); if (thisIndex == null) { return false; } if (otherIndex.getAliases().equals(thisIndex.getAliases()) == false) { return false; } } return true; }
private SortedMap<String, AliasOrIndex> buildAliasAndIndexLookup() { SortedMap<String, AliasOrIndex> aliasAndIndexLookup = new TreeMap<>(); for (ObjectCursor<IndexMetaData> cursor : indices.values()) { IndexMetaData indexMetaData = cursor.value; AliasOrIndex existing = aliasAndIndexLookup.put(indexMetaData.getIndex().getName(), new AliasOrIndex.Index(indexMetaData)); assert existing == null : "duplicate for " + indexMetaData.getIndex(); for (ObjectObjectCursor<String, AliasMetaData> aliasCursor : indexMetaData.getAliases()) { AliasMetaData aliasMetaData = aliasCursor.value; aliasAndIndexLookup.compute(aliasMetaData.getAlias(), (aliasName, alias) -> { if (alias == null) { return new AliasOrIndex.Alias(aliasMetaData, indexMetaData); } else { assert alias instanceof AliasOrIndex.Alias : alias.getClass().getName(); ((AliasOrIndex.Alias) alias).addIndex(indexMetaData); return alias; } }); } } aliasAndIndexLookup.values().stream().filter(AliasOrIndex::isAlias) .forEach(alias -> ((AliasOrIndex.Alias) alias).computeAndValidateWriteIndex()); return aliasAndIndexLookup; }
@Override boolean apply(NewAliasValidator aliasValidator, MetaData.Builder metadata, IndexMetaData index) { if (false == index.getAliases().containsKey(alias)) { return false; } metadata.put(IndexMetaData.builder(index).removeAlias(alias)); return true; } }
String alias = resolvedExpressions.get(0); AliasMetaData aliasMetaData = indexMetaData.getAliases().get(alias); if (aliasMetaData == null || requiredAlias.test(aliasMetaData) == false) { return null; AliasMetaData aliasMetaData = indexMetaData.getAliases().get(alias);
allClosedIndices.add(indexMetaData.getIndex().getName()); indexMetaData.getAliases().keysIt().forEachRemaining(duplicateAliasesIndices::add); for (ObjectCursor<IndexMetaData> cursor : indices.values()) { for (String alias: duplicateAliasesIndices) { if (cursor.value.getAliases().containsKey(alias)) { duplicates.add(alias + " (alias of " + cursor.value.getIndex() + ")");
/** * Checks if at least one of the specified aliases exists in the specified concrete indices. Wildcards are supported in the * alias names for partial matches. * * @param aliases The names of the index aliases to find * @param concreteIndices The concrete indexes the index aliases must point to order to be returned. * @return whether at least one of the specified aliases exists in one of the specified concrete indices. */ public boolean hasAliases(final String[] aliases, String[] concreteIndices) { assert aliases != null; assert concreteIndices != null; if (concreteIndices.length == 0) { return false; } Iterable<String> intersection = HppcMaps.intersection(ObjectHashSet.from(concreteIndices), indices.keys()); for (String index : intersection) { IndexMetaData indexMetaData = indices.get(index); List<AliasMetaData> filteredValues = new ArrayList<>(); for (ObjectCursor<AliasMetaData> cursor : indexMetaData.getAliases().values()) { AliasMetaData value = cursor.value; if (Regex.simpleMatch(aliases, value.alias())) { filteredValues.add(value); } } if (!filteredValues.isEmpty()) { return true; } } return false; }
IndexMetaData indexMetaData = indices.get(index); List<AliasMetaData> filteredValues = new ArrayList<>(); for (ObjectCursor<AliasMetaData> cursor : indexMetaData.getAliases().values()) { AliasMetaData value = cursor.value; if (matchAllAliases || Regex.simpleMatch(aliases, value.alias())) {
throw new IllegalArgumentException("alias [" + aliasOrIndex + "] does not have a write index"); AliasMetaData aliasMd = writeIndex.getAliases().get(alias.getAliasName()); if (aliasMd.indexRouting() != null) { if (aliasMd.indexRouting().indexOf(',') != -1) {
for (ObjectCursor<String> cursor : indexMetaData.getAliases().keys()) { builder.value(cursor.value);
for (ObjectCursor<AliasMetaData> cursor : indexMetaData.getAliases().values()) { AliasMetaData.Builder.toXContent(cursor.value, builder, params);
ImmutableOpenMap<String, AliasMetaData> aliases = metaData.getAliases(); Function<AliasMetaData, QueryBuilder> parserFunction = (alias) -> { if (alias.filter() == null) {
@Override boolean apply(NewAliasValidator aliasValidator, MetaData.Builder metadata, IndexMetaData index) { aliasValidator.validate(alias, indexRouting, filter, writeIndex); AliasMetaData newAliasMd = AliasMetaData.newAliasMetaDataBuilder(alias).filter(filter).indexRouting(indexRouting) .searchRouting(searchRouting).writeIndex(writeIndex).build(); // Check if this alias already exists AliasMetaData currentAliasMd = index.getAliases().get(alias); if (currentAliasMd != null && currentAliasMd.equals(newAliasMd)) { // It already exists, ignore it return false; } metadata.put(IndexMetaData.builder(index).putAlias(newAliasMd)); return true; } }
IndexMetaData.Builder indexMdBuilder = IndexMetaData.builder(snapshotIndexMetaData).state(IndexMetaData.State.OPEN).index(renamedIndexName); indexMdBuilder.settings(Settings.builder().put(snapshotIndexMetaData.getSettings()).put(IndexMetaData.SETTING_INDEX_UUID, UUIDs.randomBase64UUID())); if (!request.includeAliases() && !snapshotIndexMetaData.getAliases().isEmpty()) { for (ObjectCursor<String> alias : snapshotIndexMetaData.getAliases().keys()) { aliases.add(alias.value); if (!request.includeAliases()) { if (!snapshotIndexMetaData.getAliases().isEmpty()) { indexMdBuilder.removeAllAliases(); for (ObjectCursor<AliasMetaData> alias : currentIndexMetaData.getAliases().values()) { indexMdBuilder.putAlias(alias.value); for (ObjectCursor<String> alias : snapshotIndexMetaData.getAliases().keys()) { aliases.add(alias.value);
final AliasOrIndex.Alias alias = (AliasOrIndex.Alias) metaData.getAliasAndIndexLookup().get(rolloverRequest.getAlias()); final IndexMetaData indexMetaData = alias.getWriteIndex(); final boolean explicitWriteIndex = Boolean.TRUE.equals(indexMetaData.getAliases().get(alias.getAliasName()).writeIndex()); final String sourceProvidedName = indexMetaData.getSettings().get(IndexMetaData.SETTING_INDEX_PROVIDED_NAME, indexMetaData.getIndex().getName());
public boolean equalsAliases(MetaData other) { for (ObjectCursor<IndexMetaData> cursor : other.indices().values()) { IndexMetaData otherIndex = cursor.value; IndexMetaData thisIndex = index(otherIndex.getIndex()); if (thisIndex == null) { return false; } if (otherIndex.getAliases().equals(thisIndex.getAliases()) == false) { return false; } } return true; }
@Override boolean apply(NewAliasValidator aliasValidator, MetaData.Builder metadata, IndexMetaData index) { if (false == index.getAliases().containsKey(alias)) { return false; } metadata.put(IndexMetaData.builder(index).removeAlias(alias)); return true; } }
@Override boolean apply(NewAliasValidator aliasValidator, MetaData.Builder metadata, IndexMetaData index) { if (false == index.getAliases().containsKey(alias)) { return false; } metadata.put(IndexMetaData.builder(index).removeAlias(alias)); return true; } }