我正在尝试修复与我们生产中的Elasticsearch相关的问题,这个问题总是无法重现。我正在使用Elasticsearch 1.5(尚未升级)。
问题在于,在尝试创建索引时,我遇到异常IndexAlreadyExistsException的错误,因为调用
client.admin().indices().prepareExists(index).get().isExists();
在Elasticsearch处于恢复模式时返回false,然后当我尝试创建索引时,我得到了该异常。
以下几个链接指出Elasticsearch在恢复索引时返回false的问题。
由于我无法重现问题,因此我无法在检查isExists()之前测试我的修复方法,即检查健康状况。
我的问题是Elasticsearch什么时候开始恢复?
答案 0 :(得分:0)
您可以使用prepareHealth()
admin方法在执行索引维护操作之前等待群集达到给定状态:
ClusterHealthResponse health = client.admin().cluster().prepareHealth(index)
.setWaitForGreenStatus()
.get();
或者您也可以等待整个群集变绿:
ClusterHealthResponse health = client.admin().cluster().prepareHealth()
.setWaitForGreenStatus()
.get();