gpt4 book ai didi

java - Elasticsearch : find all mapping types of a given index using the Java client

转载 作者:行者123 更新时间:2023-12-02 10:06:33 25 4
gpt4 key购买 nike

我基本上想使用java客户端检索给定elasticsearch索引的所有类型。我正在使用 elasticsearch 5.4.1。

我已经成功使用此代码获取索引列表:

indices = client.admin()
.indices()
.getIndex(new GetIndexRequest())
.actionGet()
.getIndices();

现在,假设我想要第一个索引的所有类型,我该如何做到这一点?

这是我已经尝试过的方法,但它不起作用。我无法解析 ObjectObjectCursor 依赖项 (com.carrotsearch.hppc.cursors.ObjectObjectCursor)。

try {
GetMappingsResponse res = clientTest.admin().indices().getMappings(new GetMappingsRequest().indices(myIndex)).get();
ImmutableOpenMap<String, MappingMetaData> mapping = res.mappings().get(myIndex);
for (ObjectObjectCursor<String, MappingMetaData> c : mapping) {
typeList.add(c);
}
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}

最佳答案

不确定为什么要使用 ObjectObjectCursor 类,但您可以使用简单的迭代器来完成,例如:

GetMappingsResponse res = client.admin().indices().getMappings(new GetMappingsRequest().indices("<index_name>")).get();
ImmutableOpenMap<String,ImmutableOpenMap<String,MappingMetaData>> mappings = res.getMappings();
System.out.println(mappings);
ImmutableOpenMap<String,MappingMetaData> mapping = mappings.get("<type_name>");
for(Iterator<MappingMetaData> iterator = mapping.valuesIt() ; iterator.hasNext();) {
MappingMetaData metaData = iterator.next();
System.out.println(metaData.getSourceAsMap());
}

虽然这只是打印映射,但您可以使用它来访问不同的组件及其类型。

关于java - Elasticsearch : find all mapping types of a given index using the Java client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55296194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com