@Override protected void masterOperation( final IndicesAliasesRequest request, final ClusterState state, final ActionListener<IndicesAliasesResponse> listener) throws ElasticsearchException { // Expand the indices names List<AliasActions> actions = request.aliasActions(); List<AliasAction> finalActions = new ArrayList<>(); boolean hasOnlyDeletesButNoneCanBeDone = true; Set<String> aliases = new HashSet<>(); for (AliasActions action : actions) { // expand indices String[] concreteIndices = state.metaData().concreteIndices(request.indicesOptions(), action.indices()); // collect the aliases Collections.addAll(aliases, action.aliases()); for (String index : concreteIndices) { for (String alias : action.concreteAliases(state.metaData(), index)) { AliasAction finalAction = new AliasAction(action.aliasAction()); finalAction.index(index); finalAction.alias(alias); finalActions.add(finalAction); // if there is only delete requests, none will be added if the types do not map to any // existing type hasOnlyDeletesButNoneCanBeDone = false; } } } if (hasOnlyDeletesButNoneCanBeDone && actions.size() != 0) { throw new AliasesMissingException(aliases.toArray(new String[aliases.size()])); } request.aliasActions().clear(); IndicesAliasesClusterStateUpdateRequest updateRequest = new IndicesAliasesClusterStateUpdateRequest() .ackTimeout(request.timeout()) .masterNodeTimeout(request.masterNodeTimeout()) .actions(finalActions.toArray(new AliasAction[finalActions.size()])); indexAliasesService.indicesAliases( updateRequest, new ActionListener<ClusterStateUpdateResponse>() { @Override public void onResponse(ClusterStateUpdateResponse response) { listener.onResponse(new IndicesAliasesResponse(response.isAcknowledged())); } @Override public void onFailure(Throwable t) { logger.debug("failed to perform aliases", t); listener.onFailure(t); } }); }
@Override protected void masterOperation( final IndicesAliasesRequest request, final ClusterState state, final ActionListener<IndicesAliasesResponse> listener) { // Expand the indices names List<AliasActions> actions = request.aliasActions(); List<AliasAction> finalActions = new ArrayList<>(); // Resolve all the AliasActions into AliasAction instances and gather all the aliases Set<String> aliases = new HashSet<>(); for (AliasActions action : actions) { String[] concreteIndices = indexNameExpressionResolver.concreteIndexNames( state, request.indicesOptions(), action.indices()); Collections.addAll(aliases, action.aliases()); for (String index : concreteIndices) { switch (action.actionType()) { case ADD: for (String alias : action.concreteAliases(state.metaData(), index)) { finalActions.add( new AliasAction.Add( index, alias, action.filter(), action.indexRouting(), action.searchRouting())); } break; case REMOVE: for (String alias : action.concreteAliases(state.metaData(), index)) { finalActions.add(new AliasAction.Remove(index, alias)); } break; case REMOVE_INDEX: finalActions.add(new AliasAction.RemoveIndex(index)); break; default: throw new IllegalArgumentException("Unsupported action [" + action.actionType() + "]"); } } } if (finalActions.isEmpty() && false == actions.isEmpty()) { throw new AliasesNotFoundException(aliases.toArray(new String[aliases.size()])); } request.aliasActions().clear(); IndicesAliasesClusterStateUpdateRequest updateRequest = new IndicesAliasesClusterStateUpdateRequest(unmodifiableList(finalActions)) .ackTimeout(request.timeout()) .masterNodeTimeout(request.masterNodeTimeout()); indexAliasesService.indicesAliases( updateRequest, new ActionListener<ClusterStateUpdateResponse>() { @Override public void onResponse(ClusterStateUpdateResponse response) { listener.onResponse(new IndicesAliasesResponse(response.isAcknowledged())); } @Override public void onFailure(Exception t) { logger.debug("failed to perform aliases", t); listener.onFailure(t); } }); }