【问题标题】:How do we know replication status in elasticsearch?我们如何知道 elasticsearch 中的复制状态?
【发布时间】:2014-07-14 11:54:19
【问题描述】:

我已经建立了具有单个节点(node1)和索引数据的弹性搜索集群。在节点 1 上完成索引后,另一个节点(节点 2)被添加到集群中。现在我已经将副本数配置为1。复制成功完成。但是我们怎么知道复制完成了呢?是否有任何可用的 API 可以返回复制状态,如进行中、完成......

我的要求是在复制完成时通知我。

【问题讨论】:

  • John Petrone 的回答是正确的。我建议您还安装 elasticsearch-head 插件以获取有关集群的更多信息

标签: elasticsearch replication


【解决方案1】:

除了 John Petrone 的回答,我更喜欢使用以下命令

http://localhost:9200/_cat/shards/twitterindex?v

这将获取索引特定的所有主分片或副本分片的状态。处于“初始化”状态的分片正在处理中,而标记为“已启动”的分片表示它们已成功复制。

【讨论】:

    【解决方案2】:

    检查所有分片是否已成功复制的最快方法是集群健康 api:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/cluster-health.html

    “绿色”状态会告诉您所有分片都已分配:

    集群健康状态为:绿色、黄色或红色。在碎片上 级别,红色状态表示特定分片未分配 在集群中,黄色表示主分片已分配,但 副本不是,绿色表示所有分片都已分配。这 索引级别状态由最差的分片状态控制。这 集群状态由最差的索引状态控制。

    它有一个内置的机制来等待状态改变然后通知你。举个例子:

    curl -XGET 'http://localhost:9200/_cluster/health?wait_for_status=green&timeout=60s'
    

    将检查状态是否为绿色。如果是,它将立即返回,如果不是,它将在检查时等待长达 60 秒,然后返回状态。你可以循环调用这个api,或者只是将超时设置为一个大的数字,当状态变为绿色时它会返回,让你知道所有的分片都已分配。

    【讨论】:

      【解决方案3】:

      如果有人想检查每个索引的复制状态:

      curl -XGET 'http://localhost:9200/_cat/indices/<indexName>?format=json'可以用。

      此 API 的响应包含索引 health 属性。如果复制完成,该属性的值为green,否则为yellow

      【讨论】:

        猜你喜欢
        • 2011-08-06
        • 1970-01-01
        • 1970-01-01
        • 2012-05-17
        • 1970-01-01
        • 1970-01-01
        • 2014-10-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多