Elasticsearch: NoShardAvailableActionException после запуска

1

Я запускаю свое Java-приложение и Elasticsearch 1.4.2 с помощью выскочки. Иногда, когда я перезапускаю свой сервер, я получаю NoShardAvailableActionException в первых 5 запросах doc.

Мое приложение сначала прочитало некоторые документы из 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();
}
Теги:
exception
elasticsearch

1 ответ

5

Я чувствую, что вы не ожидаете восстановления осколков и готовы быть открытыми для запросов. Обычно это занимает некоторое время.

client.admin().cluster().prepareHealth().setWaitForYellowStatus().execute().actionGet(5000)

Используйте этот код перед выполнением любых вызовов. Это будет ждать не менее 5 секунд, прежде чем осколки будут полностью восстановлены, а кластер вернется к по меньшей мере желтому статусу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню