Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个';删除索引';内部指挥工作? - Fatal编程技术网

这个';删除索引';内部指挥工作?

这个';删除索引';内部指挥工作?,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,“删除索引”命令在ES中如何工作 在运行的ES群集上使用“delete index”命令是否存在任何风险? 这个命令会花费太多的CPU或内存吗?删除索引通常非常快,而Elasticsearch在发送删除索引请求的成功响应时实际上不会删除所有文档 Elasticsearch主要更新(在集群的所有节点上维护)以将索引标记为已删除,并在更新过程中进行重大调整,以及一些其他事情,如路由表、元数据等 是Elaticsearch源代码中的主要方法,它将帮助您理解我上面提到的内容以及delete索引的内部结构

“删除索引”命令在ES中如何工作

在运行的ES群集上使用“delete index”命令是否存在任何风险?
这个命令会花费太多的CPU或内存吗?

删除索引通常非常快,而Elasticsearch在发送删除索引请求的成功响应时实际上不会删除所有文档

Elasticsearch主要更新(在集群的所有节点上维护)以将索引标记为已删除,并在更新过程中进行重大调整,以及一些其他事情,如路由表、元数据等

是Elaticsearch源代码中的主要方法,它将帮助您理解我上面提到的内容以及delete索引的内部结构

上面链接中的一些重要代码片段

RoutingTable.Builder routingTableBuilder = RoutingTable.builder(currentState.routingTable());
        Metadata.Builder metadataBuilder = Metadata.builder(meta);
        ClusterBlocks.Builder clusterBlocksBuilder = ClusterBlocks.builder().blocks(currentState.blocks());

        final IndexGraveyard.Builder graveyardBuilder = IndexGraveyard.builder(metadataBuilder.indexGraveyard());
        final int previousGraveyardSize = graveyardBuilder.tombstones().size();
        for (final Index index : indices) {
            String indexName = index.getName();
            logger.info("{} deleting index", index);
            routingTableBuilder.remove(indexName);
            clusterBlocksBuilder.removeIndexBlocks(indexName);
            metadataBuilder.remove(indexName);
        }
        // add tombstones to the cluster state for each deleted index
        final IndexGraveyard currentGraveyard = graveyardBuilder.addTombstones(indices).build(settings);
        metadataBuilder.indexGraveyard(currentGraveyard); // the new graveyard set on the metadata
        logger.trace("{} tombstones purged from the cluster state. Previous tombstone size: {}. Current tombstone size: {}.",
            graveyardBuilder.getNumPurged(), previousGraveyardSize, currentGraveyard.getTombstones().size());
说到您的问题,在运行的ES群集上使用“删除索引”命令是否存在任何风险?此命令会占用太多CPU或内存吗?

不,在运行的Elasticsearch集群上使用
删除索引
请求不会有风险,除非您有一个巨大的集群状态,并且如前所述,实际删除索引是异步进行的,这只是更新各种状态和标志,不会占用太多CPU


您还可以在
org.elasticsearch.cluster.metadata.MetadataDeleteIndexService
中启用跟踪日志,并查看在上面的代码段中记录的集群大小。

@Syn,很高兴这很有帮助,如果还没有这样做,您还可以升级吗:)