Как получить состояние кластера или метаданные индекса с помощью 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()
.