繁体   English   中英

Elasticsearch:使用Java客户端查找给定索引的所有映射类型

[英]Elasticsearch : find all mapping types of a given index using the Java client

我基本上想使用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());
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM