如何在 Elasticsearch java api 中按别名查找索引?
2022-09-03 17:19:03
重新编制索引需要 30 秒,我不希望每次需要重新编制索引时搜索都脱机 30 秒。我正在尝试这样做:
- 查找别名 = abc123 的旧索引
- 创建新索引并填充新数据
- 删除别名和删除旧索引
- 给出新索引别名 = abc123
我似乎找不到任何java代码可以做到1)。其他一切都很好。任何人?还是有另一种更好的方法?
使用 Elasticsearch 0.90.9。
重新编制索引需要 30 秒,我不希望每次需要重新编制索引时搜索都脱机 30 秒。我正在尝试这样做:
我似乎找不到任何java代码可以做到1)。其他一切都很好。任何人?还是有另一种更好的方法?
使用 Elasticsearch 0.90.9。
以下是在给定别名中查找所有索引的参考方法:
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;
}
您可以使用以下命令获取所有别名:
client.admin().cluster()
.prepareState().execute()
.actionGet().getState()
.getMetaData().getAliases();
这将返回一个映射,其中索引名称为 the,而该映射为值。因此,您可以循环访问地图以获取索引名称。key
aliases