我基本上想使用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();
}
答案 0 :(得分:0)
不确定为什么要使用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());
}
尽管这只是打印映射,但是您可以使用它来访问不同的组件及其类型。