Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get a List of Indices from ElasticSearch using Jest

I'm trying to retrieve a list of indices using Jest, but I just got as far as:

Stats statistics = new Stats.Builder().build();
result = client.execute(statistics);

How can i retrieve the list of indices from the result? Do I have to use something else than Stats? It would also help if someone could show me a detailed documentation of Jest. The basics are really well documented, but with the different kinds of builders I'm really lost at the moment.

like image 896
Chris Avatar asked Apr 22 '14 15:04

Chris


2 Answers

Get Aliases will give you all the aliases for the indices on a node.

like image 75
Michael at qbox.io Avatar answered Oct 25 '22 04:10

Michael at qbox.io


One can simply navigate a browser to the following URL to get the indexes available on an ElasticSearch cluster.

http://elasticsearch.company.com/_aliases

This will return an array of indexes and their aliases in JSON. Here's an example:

{
    "compute-devzone1": { },
    "compute-den2": { },
    "compute-den1": { },
    ...
}

To get the list of indexes with Jest, use this code...

  HttpClientConfig config;
  JestClientFactory factory;
  JestClient client;
  GetAliases aliases;
  JestResult result;
  String json;

  config = new HttpClientConfig.
     Builder("http://elasticsearch.company.com").
     build();

  aliases = new GetAliases.
     Builder().
     build();

  factory = new JestClientFactory();

  factory.setHttpClientConfig(config);

  client = factory.getObject();
  result = client.execute(aliases);
  json   = result.getJsonString();

Use your favorite JSON processor to extract the indexes from json.

like image 22
Nathan Avatar answered Oct 25 '22 02:10

Nathan