当前位置: 首页>>代码示例>>Java>>正文


Java ShardRouting.id方法代码示例

本文整理汇总了Java中org.elasticsearch.cluster.routing.ShardRouting.id方法的典型用法代码示例。如果您正苦于以下问题:Java ShardRouting.id方法的具体用法?Java ShardRouting.id怎么用?Java ShardRouting.id使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.elasticsearch.cluster.routing.ShardRouting的用法示例。


在下文中一共展示了ShardRouting.id方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: processShardRouting

import org.elasticsearch.cluster.routing.ShardRouting; //导入方法依赖的package包/类
private void processShardRouting(Map<String, Map<String, List<Integer>>> routing, ShardRouting shardRouting, ShardId shardId) {
    String node;
    int id;
    String index = shardId.getIndex();

    if (shardRouting == null) {
        node = service.localNode().id();
        id = UnassignedShard.markUnassigned(shardId.id());
    } else {
        node = shardRouting.currentNodeId();
        id = shardRouting.id();
    }
    Map<String, List<Integer>> nodeMap = routing.get(node);
    if (nodeMap == null) {
        nodeMap = new TreeMap<>();
        routing.put(node, nodeMap);
    }

    List<Integer> shards = nodeMap.get(index);
    if (shards == null) {
        shards = new ArrayList<>();
        nodeMap.put(index, shards);
    }
    shards.add(id);
}
 
开发者ID:baidu,项目名称:Elasticsearch,代码行数:26,代码来源:SysShardsTableInfo.java

示例2: numReplicas

import org.elasticsearch.cluster.routing.ShardRouting; //导入方法依赖的package包/类
public int numReplicas() {
    int count = 0;
    for (ShardRouting msr : routing) {
        if (msr.primary() == false && msr.id()==0) {
            count++;
        }
    }
    return count;
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:10,代码来源:CatAllocationTestCase.java

示例3: getAllocationCommand

import org.elasticsearch.cluster.routing.ShardRouting; //导入方法依赖的package包/类
private MoveAllocationCommand getAllocationCommand() {
    String fromNodeId = null;
    String toNodeId = null;
    ShardRouting shardToBeMoved = null;
    ClusterStateResponse clusterStateResponse = client().admin().cluster().prepareState().get();
    for (RoutingNode routingNode : clusterStateResponse.getState().getRoutingNodes()) {
        if (routingNode.node().isDataNode()) {
            if (fromNodeId == null && routingNode.numberOfOwningShards() > 0) {
                fromNodeId = routingNode.nodeId();
                shardToBeMoved = routingNode.copyShards().get(randomInt(routingNode.size() - 1));
            } else {
                toNodeId = routingNode.nodeId();
            }

            if (toNodeId != null && fromNodeId != null) {
                break;
            }
        }
    }

    assertNotNull(fromNodeId);
    assertNotNull(toNodeId);
    assertNotNull(shardToBeMoved);

    logger.info("==> going to move shard [{}] from [{}] to [{}]", shardToBeMoved, fromNodeId, toNodeId);
    return new MoveAllocationCommand(shardToBeMoved.getIndexName(), shardToBeMoved.id(), fromNodeId, toNodeId);
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:28,代码来源:AckIT.java

示例4: tryRelocateShard

import org.elasticsearch.cluster.routing.ShardRouting; //导入方法依赖的package包/类
/**
 * Tries to find a relocation from the max node to the minimal node for an arbitrary shard of the given index on the
 * balance model. Iff this method returns a <code>true</code> the relocation has already been executed on the
 * simulation model as well as on the cluster.
 */
private boolean tryRelocateShard(ModelNode minNode, ModelNode maxNode, String idx, float minCost) {
    final ModelIndex index = maxNode.getIndex(idx);
    Decision decision = null;
    if (index != null) {
        if (logger.isTraceEnabled()) {
            logger.trace("Try relocating shard for index index [{}] from node [{}] to node [{}]", idx, maxNode.getNodeId(),
                    minNode.getNodeId());
        }
        ShardRouting candidate = null;
        final AllocationDeciders deciders = allocation.deciders();
        for (ShardRouting shard : index.getAllShards()) {
            if (shard.started()) {
                // skip initializing, unassigned and relocating shards we can't relocate them anyway
                Decision allocationDecision = deciders.canAllocate(shard, minNode.getRoutingNode(routingNodes), allocation);
                Decision rebalanceDecision = deciders.canRebalance(shard, allocation);
                if (((allocationDecision.type() == Type.YES) || (allocationDecision.type() == Type.THROTTLE))
                        && ((rebalanceDecision.type() == Type.YES) || (rebalanceDecision.type() == Type.THROTTLE))) {
                    if (maxNode.containsShard(shard)) {
                        // simulate moving shard from maxNode to minNode
                        final float delta = weight.weightShardAdded(this, minNode, idx) - weight.weightShardRemoved(this, maxNode, idx);
                        if (delta < minCost ||
                                (candidate != null && delta == minCost && candidate.id() > shard.id())) {
                            /* this last line is a tie-breaker to make the shard allocation alg deterministic
                             * otherwise we rely on the iteration order of the index.getAllShards() which is a set.*/
                            minCost = delta;
                            candidate = shard;
                            decision = new Decision.Multi().add(allocationDecision).add(rebalanceDecision);
                        }
                    }
                }
            }
        }

        if (candidate != null) {

            /* allocate on the model even if not throttled */
            maxNode.removeShard(candidate);
            minNode.addShard(candidate, decision);
            if (decision.type() == Type.YES) { /* only allocate on the cluster if we are not throttled */
                if (logger.isTraceEnabled()) {
                    logger.trace("Relocate shard [{}] from node [{}] to node [{}]", candidate, maxNode.getNodeId(),
                            minNode.getNodeId());
                }
                /* now allocate on the cluster - if we are started we need to relocate the shard */
                if (candidate.started()) {
                    routingNodes.relocate(candidate, minNode.getNodeId(), allocation.clusterInfo().getShardSize(candidate, ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE));

                } else {
                    routingNodes.initialize(candidate, minNode.getNodeId(), allocation.clusterInfo().getShardSize(candidate, ShardRouting.UNAVAILABLE_EXPECTED_SHARD_SIZE));
                }
                return true;

            }
        }
    }
    if (logger.isTraceEnabled()) {
        logger.trace("Couldn't find shard to relocate from node [{}] to node [{}] allocation decision [{}]", maxNode.getNodeId(),
                minNode.getNodeId(), decision == null ? "NO" : decision.type().name());
    }
    return false;
}
 
开发者ID:baidu,项目名称:Elasticsearch,代码行数:67,代码来源:BalancedShardsAllocator.java


注:本文中的org.elasticsearch.cluster.routing.ShardRouting.id方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。