Как получить состояние кластера или метаданные индекса с помощью RestHighLevelClient?

Я занимаюсь переносом приложения из TransportClient к RestHighLevelClient. Сейчас у меня есть следующий метод получения метаданных индекса:

public IndexMetaData getIndexMetaData(String indexAlias) {
    ClusterState state = transportClient.admin().cluster().prepareState()
                             .setIndices(new String[]{indexAlias})
                             .execute()
                             .actionGet()
                             .getState();
    Set<String> indices = getIndicesByAlias(indexAlias);
    if (indices.size() > 0) {
        return state.metaData().index(indices.iterator().next());
    }
    else {
        return null;
    }
}

На основе https://github.com/elastic/elasticsearch/issues/27205,RestHighLevelClient не поддерживает получение состояния кластера.

Как я могу заменить указанный выше метод с помощью RestHighLevelClient?

1 ответ

Если я правильно понимаю, у вас есть псевдоним и вы хотите получить все индексы, стоящие за ним? Это должно быть выполнено с GetAliasesRequest.

Попробуйте что-то вроде этого:

GetAliasesResponse getAliasResponse =
   client.indices().getAlias(new GetAliasesRequest("alias"),
                             RequestOptions.DEFAULT);
getAliasResponse.getAliases().keySet(); //key has the indices, value the aliases

PS: Вы можете добавить чек на existsAlias().

Другие вопросы по тегам