Elasticsearch: найти все типы сопоставления данного индекса с помощью клиента Java - PullRequest
0 голосов
/ 22 марта 2019

Я в основном хочу получить все типы заданного индекса эластичного поиска, используя клиент Java. Я работаю сasticsearch 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();
}

1 Ответ

0 голосов
/ 22 марта 2019

Не знаю, почему вы используете класс 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());
}

Хотя это просто печатает отображения, вы можете использовать его для доступа к различным компонентам и ихтипы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...