如何在Elasticsearch java api中找到Alias索引?

Tom*_*mmy 11 java elasticsearch

重新索引需要30秒,每次我需要重新索引时,我不希望我的搜索离线30秒.我正在尝试这样做:

  1. 查找alias = abc123的旧索引
  2. 创建新索引并填充新数据
  3. 删除别名并删除旧索引
  4. 给新索引别名= abc123

我似乎无法找到任何1代码的java代码.其他一切都很好.任何人?还是有另一种方式更好?

使用Elasticsearch 0.90.9.

小智 16

以下是查找给定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;
}
Run Code Online (Sandbox Code Playgroud)


Dan*_*ery 10

您可以使用它来获取所有别名:

 client.admin().cluster()
    .prepareState().execute()
    .actionGet().getState()
    .getMetaData().getAliases();
Run Code Online (Sandbox Code Playgroud)

这将返回一个映射,其索引名称为keyaliases值.因此,您可以迭代地图以获取索引名称.