我们如何知道Elasticsearch中的复制状态?

Yas*_*ani 4 replication elasticsearch

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

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

Joh*_*one 5

检查所有分片是否已成功复制的最快方法是集群健康 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'
Run Code Online (Sandbox Code Playgroud)

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


use*_*155 5

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

http://localhost:9200/_cat/shards/twitterindex?v
Run Code Online (Sandbox Code Playgroud)

这将征用特定于索引的所有主要分片或副本的状态。处于“ INITIALIZING”状态的碎片正在处理中,而标记为“ STARTED”的碎片则表示已成功复制它们。