Search in sources :

Example 26 with IndexMetaData

use of org.elasticsearch.cluster.metadata.IndexMetaData in project elasticsearch by elastic.

the class RestIndicesAction method buildTable.

// package private for testing
Table buildTable(RestRequest request, Index[] indices, ClusterHealthResponse response, IndicesStatsResponse stats, MetaData indexMetaDatas) {
    final String healthParam = request.param("health");
    final ClusterHealthStatus status;
    if (healthParam != null) {
        status = ClusterHealthStatus.fromString(healthParam);
    } else {
        status = null;
    }
    Table table = getTableWithHeader(request);
    for (final Index index : indices) {
        final String indexName = index.getName();
        ClusterIndexHealth indexHealth = response.getIndices().get(indexName);
        IndexStats indexStats = stats.getIndices().get(indexName);
        IndexMetaData indexMetaData = indexMetaDatas.getIndices().get(indexName);
        IndexMetaData.State state = indexMetaData.getState();
        if (status != null) {
            if (state == IndexMetaData.State.CLOSE || (indexHealth == null && !ClusterHealthStatus.RED.equals(status)) || !indexHealth.getStatus().equals(status)) {
                continue;
            }
        }
        table.startRow();
        table.addCell(state == IndexMetaData.State.OPEN ? (indexHealth == null ? "red*" : indexHealth.getStatus().toString().toLowerCase(Locale.ROOT)) : null);
        table.addCell(state.toString().toLowerCase(Locale.ROOT));
        table.addCell(indexName);
        table.addCell(index.getUUID());
        table.addCell(indexHealth == null ? null : indexHealth.getNumberOfShards());
        table.addCell(indexHealth == null ? null : indexHealth.getNumberOfReplicas());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getDocs().getCount());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getDocs().getDeleted());
        table.addCell(indexMetaData.getCreationDate());
        table.addCell(new DateTime(indexMetaData.getCreationDate(), DateTimeZone.UTC));
        table.addCell(indexStats == null ? null : indexStats.getTotal().getStore().size());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getStore().size());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getCompletion().getSize());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getCompletion().getSize());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getFieldData().getMemorySize());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getFieldData().getMemorySize());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getFieldData().getEvictions());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getFieldData().getEvictions());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getQueryCache().getMemorySize());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getQueryCache().getMemorySize());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getQueryCache().getEvictions());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getQueryCache().getEvictions());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getRequestCache().getMemorySize());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getRequestCache().getMemorySize());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getRequestCache().getEvictions());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getRequestCache().getEvictions());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getRequestCache().getHitCount());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getRequestCache().getHitCount());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getRequestCache().getMissCount());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getRequestCache().getMissCount());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getFlush().getTotal());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getFlush().getTotal());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getFlush().getTotalTime());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getFlush().getTotalTime());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getGet().current());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getGet().current());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getGet().getTime());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getGet().getTime());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getGet().getCount());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getGet().getCount());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getGet().getExistsTime());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getGet().getExistsTime());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getGet().getExistsCount());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getGet().getExistsCount());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getGet().getMissingTime());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getGet().getMissingTime());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getGet().getMissingCount());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getGet().getMissingCount());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getIndexing().getTotal().getDeleteCurrent());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getIndexing().getTotal().getDeleteCurrent());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getIndexing().getTotal().getDeleteTime());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getIndexing().getTotal().getDeleteTime());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getIndexing().getTotal().getDeleteCount());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getIndexing().getTotal().getDeleteCount());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getIndexing().getTotal().getIndexCurrent());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getIndexing().getTotal().getIndexCurrent());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getIndexing().getTotal().getIndexTime());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getIndexing().getTotal().getIndexTime());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getIndexing().getTotal().getIndexCount());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getIndexing().getTotal().getIndexCount());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getIndexing().getTotal().getIndexFailedCount());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getIndexing().getTotal().getIndexFailedCount());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getMerge().getCurrent());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getMerge().getCurrent());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getMerge().getCurrentNumDocs());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getMerge().getCurrentNumDocs());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getMerge().getCurrentSize());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getMerge().getCurrentSize());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getMerge().getTotal());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getMerge().getTotal());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getMerge().getTotalNumDocs());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getMerge().getTotalNumDocs());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getMerge().getTotalSize());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getMerge().getTotalSize());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getMerge().getTotalTime());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getMerge().getTotalTime());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getRefresh().getTotal());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getRefresh().getTotal());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getRefresh().getTotalTime());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getRefresh().getTotalTime());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getRefresh().getListeners());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getRefresh().getListeners());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSearch().getTotal().getFetchCurrent());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSearch().getTotal().getFetchCurrent());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSearch().getTotal().getFetchTime());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSearch().getTotal().getFetchTime());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSearch().getTotal().getFetchCount());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSearch().getTotal().getFetchCount());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSearch().getOpenContexts());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSearch().getOpenContexts());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSearch().getTotal().getQueryCurrent());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSearch().getTotal().getQueryCurrent());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSearch().getTotal().getQueryTime());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSearch().getTotal().getQueryTime());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSearch().getTotal().getQueryCount());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSearch().getTotal().getQueryCount());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSearch().getTotal().getScrollCurrent());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSearch().getTotal().getScrollCurrent());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSearch().getTotal().getScrollTime());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSearch().getTotal().getScrollTime());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSearch().getTotal().getScrollCount());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSearch().getTotal().getScrollCount());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSegments().getCount());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSegments().getCount());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSegments().getMemory());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSegments().getMemory());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSegments().getIndexWriterMemory());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSegments().getIndexWriterMemory());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSegments().getVersionMapMemory());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSegments().getVersionMapMemory());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSegments().getBitsetMemory());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSegments().getBitsetMemory());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getWarmer().current());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getWarmer().current());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getWarmer().total());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getWarmer().total());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getWarmer().totalTime());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getWarmer().totalTime());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSearch().getTotal().getSuggestCurrent());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSearch().getTotal().getSuggestCurrent());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSearch().getTotal().getSuggestTime());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSearch().getTotal().getSuggestTime());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getSearch().getTotal().getSuggestCount());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getSearch().getTotal().getSuggestCount());
        table.addCell(indexStats == null ? null : indexStats.getTotal().getTotalMemory());
        table.addCell(indexStats == null ? null : indexStats.getPrimaries().getTotalMemory());
        table.endRow();
    }
    return table;
}
Also used : ClusterHealthStatus(org.elasticsearch.cluster.health.ClusterHealthStatus) Table(org.elasticsearch.common.Table) ClusterIndexHealth(org.elasticsearch.cluster.health.ClusterIndexHealth) Index(org.elasticsearch.index.Index) IndexStats(org.elasticsearch.action.admin.indices.stats.IndexStats) DateTime(org.joda.time.DateTime) IndexMetaData(org.elasticsearch.cluster.metadata.IndexMetaData)

Example 27 with IndexMetaData

use of org.elasticsearch.cluster.metadata.IndexMetaData in project elasticsearch by elastic.

the class RestShardsAction method buildTable.

private Table buildTable(RestRequest request, ClusterStateResponse state, IndicesStatsResponse stats) {
    Table table = getTableWithHeader(request);
    for (ShardRouting shard : state.getState().routingTable().allShards()) {
        ShardStats shardStats = stats.asMap().get(shard);
        CommonStats commonStats = null;
        CommitStats commitStats = null;
        if (shardStats != null) {
            commonStats = shardStats.getStats();
            commitStats = shardStats.getCommitStats();
        }
        table.startRow();
        table.addCell(shard.getIndexName());
        table.addCell(shard.id());
        IndexMetaData indexMeta = state.getState().getMetaData().getIndexSafe(shard.index());
        boolean usesShadowReplicas = false;
        if (indexMeta != null) {
            usesShadowReplicas = indexMeta.isIndexUsingShadowReplicas();
        }
        if (shard.primary()) {
            table.addCell("p");
        } else {
            if (usesShadowReplicas) {
                table.addCell("s");
            } else {
                table.addCell("r");
            }
        }
        table.addCell(shard.state());
        table.addCell(commonStats == null ? null : commonStats.getDocs().getCount());
        table.addCell(commonStats == null ? null : commonStats.getStore().getSize());
        if (shard.assignedToNode()) {
            String ip = state.getState().nodes().get(shard.currentNodeId()).getHostAddress();
            String nodeId = shard.currentNodeId();
            StringBuilder name = new StringBuilder();
            name.append(state.getState().nodes().get(shard.currentNodeId()).getName());
            if (shard.relocating()) {
                String reloIp = state.getState().nodes().get(shard.relocatingNodeId()).getHostAddress();
                String reloNme = state.getState().nodes().get(shard.relocatingNodeId()).getName();
                String reloNodeId = shard.relocatingNodeId();
                name.append(" -> ");
                name.append(reloIp);
                name.append(" ");
                name.append(reloNodeId);
                name.append(" ");
                name.append(reloNme);
            }
            table.addCell(ip);
            table.addCell(nodeId);
            table.addCell(name);
        } else {
            table.addCell(null);
            table.addCell(null);
            table.addCell(null);
        }
        table.addCell(commitStats == null ? null : commitStats.getUserData().get(Engine.SYNC_COMMIT_ID));
        if (shard.unassignedInfo() != null) {
            table.addCell(shard.unassignedInfo().getReason());
            table.addCell(UnassignedInfo.DATE_TIME_FORMATTER.printer().print(shard.unassignedInfo().getUnassignedTimeInMillis()));
            table.addCell(TimeValue.timeValueMillis(System.currentTimeMillis() - shard.unassignedInfo().getUnassignedTimeInMillis()));
            table.addCell(shard.unassignedInfo().getDetails());
        } else {
            table.addCell(null);
            table.addCell(null);
            table.addCell(null);
            table.addCell(null);
        }
        if (shard.recoverySource() != null) {
            table.addCell(shard.recoverySource().getType().toString().toLowerCase(Locale.ROOT));
        } else {
            table.addCell(null);
        }
        table.addCell(commonStats == null ? null : commonStats.getCompletion().getSize());
        table.addCell(commonStats == null ? null : commonStats.getFieldData().getMemorySize());
        table.addCell(commonStats == null ? null : commonStats.getFieldData().getEvictions());
        table.addCell(commonStats == null ? null : commonStats.getQueryCache().getMemorySize());
        table.addCell(commonStats == null ? null : commonStats.getQueryCache().getEvictions());
        table.addCell(commonStats == null ? null : commonStats.getFlush().getTotal());
        table.addCell(commonStats == null ? null : commonStats.getFlush().getTotalTime());
        table.addCell(commonStats == null ? null : commonStats.getGet().current());
        table.addCell(commonStats == null ? null : commonStats.getGet().getTime());
        table.addCell(commonStats == null ? null : commonStats.getGet().getCount());
        table.addCell(commonStats == null ? null : commonStats.getGet().getExistsTime());
        table.addCell(commonStats == null ? null : commonStats.getGet().getExistsCount());
        table.addCell(commonStats == null ? null : commonStats.getGet().getMissingTime());
        table.addCell(commonStats == null ? null : commonStats.getGet().getMissingCount());
        table.addCell(commonStats == null ? null : commonStats.getIndexing().getTotal().getDeleteCurrent());
        table.addCell(commonStats == null ? null : commonStats.getIndexing().getTotal().getDeleteTime());
        table.addCell(commonStats == null ? null : commonStats.getIndexing().getTotal().getDeleteCount());
        table.addCell(commonStats == null ? null : commonStats.getIndexing().getTotal().getIndexCurrent());
        table.addCell(commonStats == null ? null : commonStats.getIndexing().getTotal().getIndexTime());
        table.addCell(commonStats == null ? null : commonStats.getIndexing().getTotal().getIndexCount());
        table.addCell(commonStats == null ? null : commonStats.getIndexing().getTotal().getIndexFailedCount());
        table.addCell(commonStats == null ? null : commonStats.getMerge().getCurrent());
        table.addCell(commonStats == null ? null : commonStats.getMerge().getCurrentNumDocs());
        table.addCell(commonStats == null ? null : commonStats.getMerge().getCurrentSize());
        table.addCell(commonStats == null ? null : commonStats.getMerge().getTotal());
        table.addCell(commonStats == null ? null : commonStats.getMerge().getTotalNumDocs());
        table.addCell(commonStats == null ? null : commonStats.getMerge().getTotalSize());
        table.addCell(commonStats == null ? null : commonStats.getMerge().getTotalTime());
        table.addCell(commonStats == null ? null : commonStats.getRefresh().getTotal());
        table.addCell(commonStats == null ? null : commonStats.getRefresh().getTotalTime());
        table.addCell(commonStats == null ? null : commonStats.getRefresh().getListeners());
        table.addCell(commonStats == null ? null : commonStats.getSearch().getTotal().getFetchCurrent());
        table.addCell(commonStats == null ? null : commonStats.getSearch().getTotal().getFetchTime());
        table.addCell(commonStats == null ? null : commonStats.getSearch().getTotal().getFetchCount());
        table.addCell(commonStats == null ? null : commonStats.getSearch().getOpenContexts());
        table.addCell(commonStats == null ? null : commonStats.getSearch().getTotal().getQueryCurrent());
        table.addCell(commonStats == null ? null : commonStats.getSearch().getTotal().getQueryTime());
        table.addCell(commonStats == null ? null : commonStats.getSearch().getTotal().getQueryCount());
        table.addCell(commonStats == null ? null : commonStats.getSearch().getTotal().getScrollCurrent());
        table.addCell(commonStats == null ? null : commonStats.getSearch().getTotal().getScrollTime());
        table.addCell(commonStats == null ? null : commonStats.getSearch().getTotal().getScrollCount());
        table.addCell(commonStats == null ? null : commonStats.getSegments().getCount());
        table.addCell(commonStats == null ? null : commonStats.getSegments().getMemory());
        table.addCell(commonStats == null ? null : commonStats.getSegments().getIndexWriterMemory());
        table.addCell(commonStats == null ? null : commonStats.getSegments().getVersionMapMemory());
        table.addCell(commonStats == null ? null : commonStats.getSegments().getBitsetMemory());
        table.addCell(shardStats == null || shardStats.getSeqNoStats() == null ? null : shardStats.getSeqNoStats().getMaxSeqNo());
        table.addCell(shardStats == null || shardStats.getSeqNoStats() == null ? null : shardStats.getSeqNoStats().getLocalCheckpoint());
        table.addCell(commitStats == null || shardStats.getSeqNoStats() == null ? null : shardStats.getSeqNoStats().getGlobalCheckpoint());
        table.addCell(commonStats == null ? null : commonStats.getWarmer().current());
        table.addCell(commonStats == null ? null : commonStats.getWarmer().total());
        table.addCell(commonStats == null ? null : commonStats.getWarmer().totalTime());
        table.endRow();
    }
    return table;
}
Also used : ShardStats(org.elasticsearch.action.admin.indices.stats.ShardStats) CommonStats(org.elasticsearch.action.admin.indices.stats.CommonStats) Table(org.elasticsearch.common.Table) CommitStats(org.elasticsearch.index.engine.CommitStats) ShardRouting(org.elasticsearch.cluster.routing.ShardRouting) IndexMetaData(org.elasticsearch.cluster.metadata.IndexMetaData)

Example 28 with IndexMetaData

use of org.elasticsearch.cluster.metadata.IndexMetaData in project elasticsearch by elastic.

the class RestoreService method restoreSnapshot.

/**
     * Restores snapshot specified in the restore request.
     *
     * @param request  restore request
     * @param listener restore listener
     */
public void restoreSnapshot(final RestoreRequest request, final ActionListener<RestoreCompletionResponse> listener) {
    try {
        // Read snapshot info and metadata from the repository
        Repository repository = repositoriesService.repository(request.repositoryName);
        final RepositoryData repositoryData = repository.getRepositoryData();
        final Optional<SnapshotId> incompatibleSnapshotId = repositoryData.getIncompatibleSnapshotIds().stream().filter(s -> request.snapshotName.equals(s.getName())).findFirst();
        if (incompatibleSnapshotId.isPresent()) {
            throw new SnapshotRestoreException(request.repositoryName, request.snapshotName, "cannot restore incompatible snapshot");
        }
        final Optional<SnapshotId> matchingSnapshotId = repositoryData.getSnapshotIds().stream().filter(s -> request.snapshotName.equals(s.getName())).findFirst();
        if (matchingSnapshotId.isPresent() == false) {
            throw new SnapshotRestoreException(request.repositoryName, request.snapshotName, "snapshot does not exist");
        }
        final SnapshotId snapshotId = matchingSnapshotId.get();
        final SnapshotInfo snapshotInfo = repository.getSnapshotInfo(snapshotId);
        final Snapshot snapshot = new Snapshot(request.repositoryName, snapshotId);
        List<String> filteredIndices = SnapshotUtils.filterIndices(snapshotInfo.indices(), request.indices(), request.indicesOptions());
        MetaData metaData = repository.getSnapshotMetaData(snapshotInfo, repositoryData.resolveIndices(filteredIndices));
        // Make sure that we can restore from this snapshot
        validateSnapshotRestorable(request.repositoryName, snapshotInfo);
        // Find list of indices that we need to restore
        final Map<String, String> renamedIndices = renamedIndices(request, filteredIndices);
        // Now we can start the actual restore process by adding shards to be recovered in the cluster state
        // and updating cluster metadata (global and index) as needed
        clusterService.submitStateUpdateTask(request.cause(), new ClusterStateUpdateTask() {

            RestoreInfo restoreInfo = null;

            @Override
            public ClusterState execute(ClusterState currentState) {
                // Check if another restore process is already running - cannot run two restore processes at the
                // same time
                RestoreInProgress restoreInProgress = currentState.custom(RestoreInProgress.TYPE);
                if (restoreInProgress != null && !restoreInProgress.entries().isEmpty()) {
                    throw new ConcurrentSnapshotExecutionException(snapshot, "Restore process is already running in this cluster");
                }
                // Check if the snapshot to restore is currently being deleted
                SnapshotDeletionsInProgress deletionsInProgress = currentState.custom(SnapshotDeletionsInProgress.TYPE);
                if (deletionsInProgress != null && deletionsInProgress.hasDeletionsInProgress()) {
                    throw new ConcurrentSnapshotExecutionException(snapshot, "cannot restore a snapshot while a snapshot deletion is in-progress [" + deletionsInProgress.getEntries().get(0).getSnapshot() + "]");
                }
                // Updating cluster state
                ClusterState.Builder builder = ClusterState.builder(currentState);
                MetaData.Builder mdBuilder = MetaData.builder(currentState.metaData());
                ClusterBlocks.Builder blocks = ClusterBlocks.builder().blocks(currentState.blocks());
                RoutingTable.Builder rtBuilder = RoutingTable.builder(currentState.routingTable());
                ImmutableOpenMap<ShardId, RestoreInProgress.ShardRestoreStatus> shards;
                Set<String> aliases = new HashSet<>();
                if (!renamedIndices.isEmpty()) {
                    // We have some indices to restore
                    ImmutableOpenMap.Builder<ShardId, RestoreInProgress.ShardRestoreStatus> shardsBuilder = ImmutableOpenMap.builder();
                    final Version minIndexCompatibilityVersion = currentState.getNodes().getMaxNodeVersion().minimumIndexCompatibilityVersion();
                    for (Map.Entry<String, String> indexEntry : renamedIndices.entrySet()) {
                        String index = indexEntry.getValue();
                        boolean partial = checkPartial(index);
                        SnapshotRecoverySource recoverySource = new SnapshotRecoverySource(snapshot, snapshotInfo.version(), index);
                        String renamedIndexName = indexEntry.getKey();
                        IndexMetaData snapshotIndexMetaData = metaData.index(index);
                        snapshotIndexMetaData = updateIndexSettings(snapshotIndexMetaData, request.indexSettings, request.ignoreIndexSettings);
                        try {
                            snapshotIndexMetaData = metaDataIndexUpgradeService.upgradeIndexMetaData(snapshotIndexMetaData, minIndexCompatibilityVersion);
                        } catch (Exception ex) {
                            throw new SnapshotRestoreException(snapshot, "cannot restore index [" + index + "] because it cannot be upgraded", ex);
                        }
                        // Check that the index is closed or doesn't exist
                        IndexMetaData currentIndexMetaData = currentState.metaData().index(renamedIndexName);
                        IntSet ignoreShards = new IntHashSet();
                        final Index renamedIndex;
                        if (currentIndexMetaData == null) {
                            // Index doesn't exist - create it and start recovery
                            // Make sure that the index we are about to create has a validate name
                            MetaDataCreateIndexService.validateIndexName(renamedIndexName, currentState);
                            createIndexService.validateIndexSettings(renamedIndexName, snapshotIndexMetaData.getSettings());
                            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()) {
                                // Remove all aliases - they shouldn't be restored
                                indexMdBuilder.removeAllAliases();
                            } else {
                                for (ObjectCursor<String> alias : snapshotIndexMetaData.getAliases().keys()) {
                                    aliases.add(alias.value);
                                }
                            }
                            IndexMetaData updatedIndexMetaData = indexMdBuilder.build();
                            if (partial) {
                                populateIgnoredShards(index, ignoreShards);
                            }
                            rtBuilder.addAsNewRestore(updatedIndexMetaData, recoverySource, ignoreShards);
                            blocks.addBlocks(updatedIndexMetaData);
                            mdBuilder.put(updatedIndexMetaData, true);
                            renamedIndex = updatedIndexMetaData.getIndex();
                        } else {
                            validateExistingIndex(currentIndexMetaData, snapshotIndexMetaData, renamedIndexName, partial);
                            // Index exists and it's closed - open it in metadata and start recovery
                            IndexMetaData.Builder indexMdBuilder = IndexMetaData.builder(snapshotIndexMetaData).state(IndexMetaData.State.OPEN);
                            indexMdBuilder.version(Math.max(snapshotIndexMetaData.getVersion(), currentIndexMetaData.getVersion() + 1));
                            if (!request.includeAliases()) {
                                // Remove all snapshot aliases
                                if (!snapshotIndexMetaData.getAliases().isEmpty()) {
                                    indexMdBuilder.removeAllAliases();
                                }
                                /// Add existing aliases
                                for (ObjectCursor<AliasMetaData> alias : currentIndexMetaData.getAliases().values()) {
                                    indexMdBuilder.putAlias(alias.value);
                                }
                            } else {
                                for (ObjectCursor<String> alias : snapshotIndexMetaData.getAliases().keys()) {
                                    aliases.add(alias.value);
                                }
                            }
                            indexMdBuilder.settings(Settings.builder().put(snapshotIndexMetaData.getSettings()).put(IndexMetaData.SETTING_INDEX_UUID, currentIndexMetaData.getIndexUUID()));
                            IndexMetaData updatedIndexMetaData = indexMdBuilder.index(renamedIndexName).build();
                            rtBuilder.addAsRestore(updatedIndexMetaData, recoverySource);
                            blocks.updateBlocks(updatedIndexMetaData);
                            mdBuilder.put(updatedIndexMetaData, true);
                            renamedIndex = updatedIndexMetaData.getIndex();
                        }
                        for (int shard = 0; shard < snapshotIndexMetaData.getNumberOfShards(); shard++) {
                            if (!ignoreShards.contains(shard)) {
                                shardsBuilder.put(new ShardId(renamedIndex, shard), new RestoreInProgress.ShardRestoreStatus(clusterService.state().nodes().getLocalNodeId()));
                            } else {
                                shardsBuilder.put(new ShardId(renamedIndex, shard), new RestoreInProgress.ShardRestoreStatus(clusterService.state().nodes().getLocalNodeId(), RestoreInProgress.State.FAILURE));
                            }
                        }
                    }
                    shards = shardsBuilder.build();
                    RestoreInProgress.Entry restoreEntry = new RestoreInProgress.Entry(snapshot, overallState(RestoreInProgress.State.INIT, shards), Collections.unmodifiableList(new ArrayList<>(renamedIndices.keySet())), shards);
                    builder.putCustom(RestoreInProgress.TYPE, new RestoreInProgress(restoreEntry));
                } else {
                    shards = ImmutableOpenMap.of();
                }
                checkAliasNameConflicts(renamedIndices, aliases);
                // Restore global state if needed
                restoreGlobalStateIfRequested(mdBuilder);
                if (completed(shards)) {
                    // We don't have any indices to restore - we are done
                    restoreInfo = new RestoreInfo(snapshotId.getName(), Collections.unmodifiableList(new ArrayList<>(renamedIndices.keySet())), shards.size(), shards.size() - failedShards(shards));
                }
                RoutingTable rt = rtBuilder.build();
                ClusterState updatedState = builder.metaData(mdBuilder).blocks(blocks).routingTable(rt).build();
                return allocationService.reroute(updatedState, "restored snapshot [" + snapshot + "]");
            }

            private void checkAliasNameConflicts(Map<String, String> renamedIndices, Set<String> aliases) {
                for (Map.Entry<String, String> renamedIndex : renamedIndices.entrySet()) {
                    if (aliases.contains(renamedIndex.getKey())) {
                        throw new SnapshotRestoreException(snapshot, "cannot rename index [" + renamedIndex.getValue() + "] into [" + renamedIndex.getKey() + "] because of conflict with an alias with the same name");
                    }
                }
            }

            private void populateIgnoredShards(String index, IntSet ignoreShards) {
                for (SnapshotShardFailure failure : snapshotInfo.shardFailures()) {
                    if (index.equals(failure.index())) {
                        ignoreShards.add(failure.shardId());
                    }
                }
            }

            private boolean checkPartial(String index) {
                // Make sure that index was fully snapshotted
                if (failed(snapshotInfo, index)) {
                    if (request.partial()) {
                        return true;
                    } else {
                        throw new SnapshotRestoreException(snapshot, "index [" + index + "] wasn't fully snapshotted - cannot restore");
                    }
                } else {
                    return false;
                }
            }

            private void validateExistingIndex(IndexMetaData currentIndexMetaData, IndexMetaData snapshotIndexMetaData, String renamedIndex, boolean partial) {
                // Index exist - checking that it's closed
                if (currentIndexMetaData.getState() != IndexMetaData.State.CLOSE) {
                    // TODO: Enable restore for open indices
                    throw new SnapshotRestoreException(snapshot, "cannot restore index [" + renamedIndex + "] because it's open");
                }
                // Index exist - checking if it's partial restore
                if (partial) {
                    throw new SnapshotRestoreException(snapshot, "cannot restore partial index [" + renamedIndex + "] because such index already exists");
                }
                // Make sure that the number of shards is the same. That's the only thing that we cannot change
                if (currentIndexMetaData.getNumberOfShards() != snapshotIndexMetaData.getNumberOfShards()) {
                    throw new SnapshotRestoreException(snapshot, "cannot restore index [" + renamedIndex + "] with [" + currentIndexMetaData.getNumberOfShards() + "] shard from snapshot with [" + snapshotIndexMetaData.getNumberOfShards() + "] shards");
                }
            }

            /**
                 * Optionally updates index settings in indexMetaData by removing settings listed in ignoreSettings and
                 * merging them with settings in changeSettings.
                 */
            private IndexMetaData updateIndexSettings(IndexMetaData indexMetaData, Settings changeSettings, String[] ignoreSettings) {
                if (changeSettings.names().isEmpty() && ignoreSettings.length == 0) {
                    return indexMetaData;
                }
                Settings normalizedChangeSettings = Settings.builder().put(changeSettings).normalizePrefix(IndexMetaData.INDEX_SETTING_PREFIX).build();
                IndexMetaData.Builder builder = IndexMetaData.builder(indexMetaData);
                Map<String, String> settingsMap = new HashMap<>(indexMetaData.getSettings().getAsMap());
                List<String> simpleMatchPatterns = new ArrayList<>();
                for (String ignoredSetting : ignoreSettings) {
                    if (!Regex.isSimpleMatchPattern(ignoredSetting)) {
                        if (UNREMOVABLE_SETTINGS.contains(ignoredSetting)) {
                            throw new SnapshotRestoreException(snapshot, "cannot remove setting [" + ignoredSetting + "] on restore");
                        } else {
                            settingsMap.remove(ignoredSetting);
                        }
                    } else {
                        simpleMatchPatterns.add(ignoredSetting);
                    }
                }
                if (!simpleMatchPatterns.isEmpty()) {
                    String[] removePatterns = simpleMatchPatterns.toArray(new String[simpleMatchPatterns.size()]);
                    Iterator<Map.Entry<String, String>> iterator = settingsMap.entrySet().iterator();
                    while (iterator.hasNext()) {
                        Map.Entry<String, String> entry = iterator.next();
                        if (UNREMOVABLE_SETTINGS.contains(entry.getKey()) == false) {
                            if (Regex.simpleMatch(removePatterns, entry.getKey())) {
                                iterator.remove();
                            }
                        }
                    }
                }
                for (Map.Entry<String, String> entry : normalizedChangeSettings.getAsMap().entrySet()) {
                    if (UNMODIFIABLE_SETTINGS.contains(entry.getKey())) {
                        throw new SnapshotRestoreException(snapshot, "cannot modify setting [" + entry.getKey() + "] on restore");
                    } else {
                        settingsMap.put(entry.getKey(), entry.getValue());
                    }
                }
                return builder.settings(Settings.builder().put(settingsMap)).build();
            }

            private void restoreGlobalStateIfRequested(MetaData.Builder mdBuilder) {
                if (request.includeGlobalState()) {
                    if (metaData.persistentSettings() != null) {
                        Settings settings = metaData.persistentSettings();
                        clusterSettings.validateUpdate(settings);
                        mdBuilder.persistentSettings(settings);
                    }
                    if (metaData.templates() != null) {
                        // TODO: Should all existing templates be deleted first?
                        for (ObjectCursor<IndexTemplateMetaData> cursor : metaData.templates().values()) {
                            mdBuilder.put(cursor.value);
                        }
                    }
                    if (metaData.customs() != null) {
                        for (ObjectObjectCursor<String, MetaData.Custom> cursor : metaData.customs()) {
                            if (!RepositoriesMetaData.TYPE.equals(cursor.key)) {
                                // Don't restore repositories while we are working with them
                                // TODO: Should we restore them at the end?
                                mdBuilder.putCustom(cursor.key, cursor.value);
                            }
                        }
                    }
                }
            }

            @Override
            public void onFailure(String source, Exception e) {
                logger.warn((Supplier<?>) () -> new ParameterizedMessage("[{}] failed to restore snapshot", snapshotId), e);
                listener.onFailure(e);
            }

            @Override
            public TimeValue timeout() {
                return request.masterNodeTimeout();
            }

            @Override
            public void clusterStateProcessed(String source, ClusterState oldState, ClusterState newState) {
                listener.onResponse(new RestoreCompletionResponse(snapshot, restoreInfo));
            }
        });
    } catch (Exception e) {
        logger.warn((Supplier<?>) () -> new ParameterizedMessage("[{}] failed to restore snapshot", request.repositoryName + ":" + request.snapshotName), e);
        listener.onFailure(e);
    }
}
Also used : MetaData(org.elasticsearch.cluster.metadata.MetaData) ShardId(org.elasticsearch.index.shard.ShardId) SETTING_INDEX_UUID(org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_INDEX_UUID) SETTING_VERSION_MINIMUM_COMPATIBLE(org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_VERSION_MINIMUM_COMPATIBLE) SnapshotRecoverySource(org.elasticsearch.cluster.routing.RecoverySource.SnapshotRecoverySource) AllocationService(org.elasticsearch.cluster.routing.allocation.AllocationService) ClusterBlocks(org.elasticsearch.cluster.block.ClusterBlocks) ObjectObjectCursor(com.carrotsearch.hppc.cursors.ObjectObjectCursor) ClusterState(org.elasticsearch.cluster.ClusterState) ClusterStateUpdateTask(org.elasticsearch.cluster.ClusterStateUpdateTask) Settings(org.elasticsearch.common.settings.Settings) RestoreInProgress(org.elasticsearch.cluster.RestoreInProgress) Map(java.util.Map) IndicesOptions(org.elasticsearch.action.support.IndicesOptions) SETTING_VERSION_UPGRADED(org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_VERSION_UPGRADED) Priority(org.elasticsearch.common.Priority) SnapshotDeletionsInProgress(org.elasticsearch.cluster.SnapshotDeletionsInProgress) AliasMetaData(org.elasticsearch.cluster.metadata.AliasMetaData) UUIDs(org.elasticsearch.common.UUIDs) Set(java.util.Set) ObjectCursor(com.carrotsearch.hppc.cursors.ObjectCursor) ClusterChangedEvent(org.elasticsearch.cluster.ClusterChangedEvent) Collectors(java.util.stream.Collectors) Sets(org.elasticsearch.common.util.set.Sets) Objects(java.util.Objects) RecoverySource(org.elasticsearch.cluster.routing.RecoverySource) List(java.util.List) Logger(org.apache.logging.log4j.Logger) Version(org.elasticsearch.Version) Supplier(org.apache.logging.log4j.util.Supplier) IndexMetaData(org.elasticsearch.cluster.metadata.IndexMetaData) Optional(java.util.Optional) RepositoryData(org.elasticsearch.repositories.RepositoryData) ShardRouting(org.elasticsearch.cluster.routing.ShardRouting) MetaDataCreateIndexService(org.elasticsearch.cluster.metadata.MetaDataCreateIndexService) ImmutableOpenMap(org.elasticsearch.common.collect.ImmutableOpenMap) ClusterService(org.elasticsearch.cluster.service.ClusterService) HashMap(java.util.HashMap) Index(org.elasticsearch.index.Index) Sets.newHashSet(org.elasticsearch.common.util.set.Sets.newHashSet) Lucene(org.elasticsearch.common.lucene.Lucene) ParameterizedMessage(org.apache.logging.log4j.message.ParameterizedMessage) Inject(org.elasticsearch.common.inject.Inject) ArrayList(java.util.ArrayList) SETTING_NUMBER_OF_REPLICAS(org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_NUMBER_OF_REPLICAS) HashSet(java.util.HashSet) ClusterStateTaskListener(org.elasticsearch.cluster.ClusterStateTaskListener) TimeValue(org.elasticsearch.common.unit.TimeValue) Regex(org.elasticsearch.common.regex.Regex) SETTING_VERSION_CREATED(org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_VERSION_CREATED) SETTING_AUTO_EXPAND_REPLICAS(org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_AUTO_EXPAND_REPLICAS) SETTING_CREATION_DATE(org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_CREATION_DATE) ShardRestoreStatus(org.elasticsearch.cluster.RestoreInProgress.ShardRestoreStatus) ClusterStateApplier(org.elasticsearch.cluster.ClusterStateApplier) RepositoriesMetaData(org.elasticsearch.cluster.metadata.RepositoriesMetaData) Repository(org.elasticsearch.repositories.Repository) AbstractComponent(org.elasticsearch.common.component.AbstractComponent) Iterator(java.util.Iterator) SETTING_NUMBER_OF_SHARDS(org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_NUMBER_OF_SHARDS) IndexShard(org.elasticsearch.index.shard.IndexShard) IntHashSet(com.carrotsearch.hppc.IntHashSet) IntSet(com.carrotsearch.hppc.IntSet) ClusterStateTaskConfig(org.elasticsearch.cluster.ClusterStateTaskConfig) ClusterStateTaskExecutor(org.elasticsearch.cluster.ClusterStateTaskExecutor) RoutingChangesObserver(org.elasticsearch.cluster.routing.RoutingChangesObserver) UnassignedInfo(org.elasticsearch.cluster.routing.UnassignedInfo) RepositoriesService(org.elasticsearch.repositories.RepositoriesService) ClusterSettings(org.elasticsearch.common.settings.ClusterSettings) Collections.unmodifiableSet(java.util.Collections.unmodifiableSet) MetaDataIndexUpgradeService(org.elasticsearch.cluster.metadata.MetaDataIndexUpgradeService) RoutingTable(org.elasticsearch.cluster.routing.RoutingTable) IndexTemplateMetaData(org.elasticsearch.cluster.metadata.IndexTemplateMetaData) Collections(java.util.Collections) ActionListener(org.elasticsearch.action.ActionListener) IntHashSet(com.carrotsearch.hppc.IntHashSet) ArrayList(java.util.ArrayList) Index(org.elasticsearch.index.Index) SnapshotDeletionsInProgress(org.elasticsearch.cluster.SnapshotDeletionsInProgress) Version(org.elasticsearch.Version) MetaData(org.elasticsearch.cluster.metadata.MetaData) AliasMetaData(org.elasticsearch.cluster.metadata.AliasMetaData) IndexMetaData(org.elasticsearch.cluster.metadata.IndexMetaData) RepositoriesMetaData(org.elasticsearch.cluster.metadata.RepositoriesMetaData) IndexTemplateMetaData(org.elasticsearch.cluster.metadata.IndexTemplateMetaData) List(java.util.List) ArrayList(java.util.ArrayList) Settings(org.elasticsearch.common.settings.Settings) ClusterSettings(org.elasticsearch.common.settings.ClusterSettings) TimeValue(org.elasticsearch.common.unit.TimeValue) ClusterState(org.elasticsearch.cluster.ClusterState) IndexMetaData(org.elasticsearch.cluster.metadata.IndexMetaData) RestoreInProgress(org.elasticsearch.cluster.RestoreInProgress) SnapshotRecoverySource(org.elasticsearch.cluster.routing.RecoverySource.SnapshotRecoverySource) RoutingTable(org.elasticsearch.cluster.routing.RoutingTable) ObjectObjectCursor(com.carrotsearch.hppc.cursors.ObjectObjectCursor) ObjectObjectCursor(com.carrotsearch.hppc.cursors.ObjectObjectCursor) ObjectCursor(com.carrotsearch.hppc.cursors.ObjectCursor) Map(java.util.Map) ImmutableOpenMap(org.elasticsearch.common.collect.ImmutableOpenMap) HashMap(java.util.HashMap) Set(java.util.Set) Sets.newHashSet(org.elasticsearch.common.util.set.Sets.newHashSet) HashSet(java.util.HashSet) IntHashSet(com.carrotsearch.hppc.IntHashSet) IntSet(com.carrotsearch.hppc.IntSet) Collections.unmodifiableSet(java.util.Collections.unmodifiableSet) IntSet(com.carrotsearch.hppc.IntSet) ImmutableOpenMap(org.elasticsearch.common.collect.ImmutableOpenMap) ShardId(org.elasticsearch.index.shard.ShardId) Iterator(java.util.Iterator) Supplier(org.apache.logging.log4j.util.Supplier) ClusterStateUpdateTask(org.elasticsearch.cluster.ClusterStateUpdateTask) RepositoryData(org.elasticsearch.repositories.RepositoryData) Repository(org.elasticsearch.repositories.Repository) ShardRestoreStatus(org.elasticsearch.cluster.RestoreInProgress.ShardRestoreStatus) ParameterizedMessage(org.apache.logging.log4j.message.ParameterizedMessage)

Example 29 with IndexMetaData

use of org.elasticsearch.cluster.metadata.IndexMetaData in project elasticsearch by elastic.

the class TaskResultsService method storeResult.

public void storeResult(TaskResult taskResult, ActionListener<Void> listener) {
    ClusterState state = clusterService.state();
    if (state.routingTable().hasIndex(TASK_INDEX) == false) {
        CreateIndexRequest createIndexRequest = new CreateIndexRequest();
        createIndexRequest.settings(taskResultIndexSettings());
        createIndexRequest.index(TASK_INDEX);
        createIndexRequest.mapping(TASK_TYPE, taskResultIndexMapping(), XContentType.JSON);
        createIndexRequest.cause("auto(task api)");
        createIndexAction.execute(null, createIndexRequest, new ActionListener<CreateIndexResponse>() {

            @Override
            public void onResponse(CreateIndexResponse result) {
                doStoreResult(taskResult, listener);
            }

            @Override
            public void onFailure(Exception e) {
                if (ExceptionsHelper.unwrapCause(e) instanceof ResourceAlreadyExistsException) {
                    // we have the index, do it
                    try {
                        doStoreResult(taskResult, listener);
                    } catch (Exception inner) {
                        inner.addSuppressed(e);
                        listener.onFailure(inner);
                    }
                } else {
                    listener.onFailure(e);
                }
            }
        });
    } else {
        IndexMetaData metaData = state.getMetaData().index(TASK_INDEX);
        if (metaData.getMappings().containsKey(TASK_TYPE) == false) {
            // The index already exists but doesn't have our mapping
            client.admin().indices().preparePutMapping(TASK_INDEX).setType(TASK_TYPE).setSource(taskResultIndexMapping(), XContentType.JSON).execute(new ActionListener<PutMappingResponse>() {

                @Override
                public void onResponse(PutMappingResponse putMappingResponse) {
                    doStoreResult(taskResult, listener);
                }

                @Override
                public void onFailure(Exception e) {
                    listener.onFailure(e);
                }
            });
        } else {
            doStoreResult(taskResult, listener);
        }
    }
}
Also used : ClusterState(org.elasticsearch.cluster.ClusterState) ResourceAlreadyExistsException(org.elasticsearch.ResourceAlreadyExistsException) PutMappingResponse(org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse) CreateIndexRequest(org.elasticsearch.action.admin.indices.create.CreateIndexRequest) CreateIndexResponse(org.elasticsearch.action.admin.indices.create.CreateIndexResponse) ElasticsearchException(org.elasticsearch.ElasticsearchException) ResourceAlreadyExistsException(org.elasticsearch.ResourceAlreadyExistsException) IOException(java.io.IOException) IndexMetaData(org.elasticsearch.cluster.metadata.IndexMetaData)

Example 30 with IndexMetaData

use of org.elasticsearch.cluster.metadata.IndexMetaData in project elasticsearch by elastic.

the class SimpleClusterStateIT method testFilteringByIndexWorks.

/**
     * Retrieves the cluster state for the given indices and then checks
     * that the cluster state returns coherent data for both routing table and metadata.
     */
private void testFilteringByIndexWorks(String[] indices, String[] expected) {
    ClusterStateResponse clusterState = client().admin().cluster().prepareState().clear().setMetaData(true).setRoutingTable(true).setIndices(indices).get();
    ImmutableOpenMap<String, IndexMetaData> metaData = clusterState.getState().getMetaData().indices();
    assertThat(metaData.size(), is(expected.length));
    RoutingTable routingTable = clusterState.getState().getRoutingTable();
    assertThat(routingTable.indicesRouting().size(), is(expected.length));
    for (String expectedIndex : expected) {
        assertThat(metaData, CollectionAssertions.hasKey(expectedIndex));
        assertThat(routingTable.hasIndex(expectedIndex), is(true));
    }
}
Also used : RoutingTable(org.elasticsearch.cluster.routing.RoutingTable) ClusterStateResponse(org.elasticsearch.action.admin.cluster.state.ClusterStateResponse) IndexMetaData(org.elasticsearch.cluster.metadata.IndexMetaData)

Aggregations

IndexMetaData (org.elasticsearch.cluster.metadata.IndexMetaData)253 IndexMetadata (org.elasticsearch.cluster.metadata.IndexMetadata)194 ClusterState (org.elasticsearch.cluster.ClusterState)124 Settings (org.elasticsearch.common.settings.Settings)104 Index (org.elasticsearch.index.Index)100 Test (org.junit.Test)90 ShardId (org.elasticsearch.index.shard.ShardId)71 ShardRouting (org.elasticsearch.cluster.routing.ShardRouting)68 IOException (java.io.IOException)65 Metadata (org.elasticsearch.cluster.metadata.Metadata)62 IndexSettings (org.elasticsearch.index.IndexSettings)62 RoutingTable (org.elasticsearch.cluster.routing.RoutingTable)60 MetaData (org.elasticsearch.cluster.metadata.MetaData)58 HashSet (java.util.HashSet)56 HashMap (java.util.HashMap)54 IndexShardRoutingTable (org.elasticsearch.cluster.routing.IndexShardRoutingTable)54 Map (java.util.Map)50 XContentBuilder (org.elasticsearch.common.xcontent.XContentBuilder)49 ArrayList (java.util.ArrayList)47 DiscoveryNode (org.elasticsearch.cluster.node.DiscoveryNode)44