重新索引需要30秒,每次我需要重新索引时,我不希望我的搜索离线30秒.我正在尝试这样做:
查找alias = abc123的旧索引
创建新索引并填充新数据
删除别名并删除旧索引
给新索引别名= abc123
我似乎无法找到任何1代码的java代码.其他一切都很好.任何人?还是有另一种方式更好?
使用Elasticsearch 0.90.9.
您可以使用它来获取所有别名:
client.admin().cluster() .prepareState().execute() .actionGet().getState() .getMetaData().getAliases();
这将返回一个映射,其索引名称为key
和aliases
值.因此,您可以迭代地图以获取索引名称.
以下是查找给定aliasName中所有索引的参考方法:
public Set<String> getIndicesFromAliasName(String aliasName) { IndicesAdminClient iac = client.admin().indices(); ImmutableOpenMap<String, List<AliasMetaData>> map = iac.getAliases(new GetAliasesRequest(aliasName)) .actionGet().getAliases(); final Set<String> allIndices = new HashSet<>(); map.keysIt().forEachRemaining(allIndices::add); return allIndices; }