Son*_*123 2 java exception elasticsearch
我通过upstart启动我的Java应用程序和Elasticsearch 1.4.2.有时,当我重新启动服务器时,我会收到NoShardAvailableActionException
前5个文档请求中的内容.
我的应用程序首先从Elasticsearch读取了一些文档,而Elasticsearch似乎还没有准备好.当我等待一点并重新启动我的应用程序时,一切正常.
如何检查我的Elasticsearch集群(我只有1个节点)是否已准备好获取文档?
我已经尝试检查群集状态,但即使它已经是黄色,我有时会得到NoShardAvailableActionException
:
private static void checkClusterStateNotRed() throws Exception {
while(clusterState() == ClusterHealthStatus.RED) {
Logger.info("Elasticsearch cluster state is red);
Thread.sleep(1000);
}
}
private static ClusterHealthStatus clusterState() throws Exception {
return ElasticsearchClient.getInstance()
.admin().cluster()
.clusterStats(new ClusterStatsRequest())
.get()
.getStatus();
}
Run Code Online (Sandbox Code Playgroud)
我觉得你不是在等待碎片被恢复并准备开放请求.通常需要一些时间.
client.admin().cluster().prepareHealth().setWaitForYellowStatus().execute().actionGet(5000)
Run Code Online (Sandbox Code Playgroud)
在拨打电话之前使用此代码.在完全恢复分片并且群集恢复到至少黄色状态之前,这将等待至少5秒.
归档时间: |
|
查看次数: |
5880 次 |
最近记录: |