Marc,

Maybe these snippets will help?

The enclosing class's constructor sets the client data member to either a 
Node client or Transport client (both work fine; I prefer the 
TransportClient).

The source string contains one or more index names, with a comma between 
each pair of names. A name may contain wildcards as supported by ES.

This code works for 1.3.4. Not sure if 4.X has yet another breaking change, 
but if that's the case, it is usually no big deal to handle.

*public static String[] parseIndex(String source)*
{
  return indexSplitter.split(source);
}

*public String[] getIndexNames(String indexPattern) throws UtilityException*
{
  if (indexPattern.trim().isEmpty())
    throw new UtilityException("Cannot resolve empty index pattern ["
        + indexPattern + "]");

  try
  {
    /*
     * Parse the index pattern on commas, if present. Then pass the list of
     * individual names (which may include wildcards and - signs) to
     * Elasticsearch for final resolution
     */
    String[] indexSpecList = parseIndex(indexPattern);

    /*
     * Get the list of individual index names, along with their status
     * information (which we will ignore in this method)
     */
    IndicesAdminClient iac = client.admin().indices();
    RecoveryRequestBuilder isrb = iac.prepareRecoveries();
    isrb.setIndices(indexSpecList);
    RecoveryResponse isr = isrb.execute().actionGet();

    /* Create an array of just the names of the indices */
    ArrayList<String> indices = new ArrayList<String>();
    Map<String, List<ShardRecoveryResponse>> sr = isr.shardResponses();
    for (String index : sr.keySet())
    {
      indices.add(index.trim());
    }

    /* Be sure there is at least one index that matches the pattern */
    if (indices.isEmpty())
      throw new UtilityException("Cannot resolve index pattern ["
          + indexPattern + "] to at least one existing index");

    /* Convert to String[] and return */
    return indices.toArray(new String[indices.size()]);
  }
  catch (ElasticsearchException e)
  {
    throw new UtilityException("Cannot resolve index pattern ["
        + indexPattern + "]: " + e);
  }
}

private final Client         client;

private static final Pattern indexSplitter = Pattern.compile(Pattern
                                                 .quote(","));


Brian


On Tuesday, January 13, 2015 at 6:56:07 AM UTC-5, Marc wrote:
>
> Hi,
>
> I would like to get a list of the available indices in my cluster using 
> the java api using the node client.
>
> Currently the request is done via the REST interface similar to this:
> http://localhost:9200/logstash-*/_stats/indices
>
> Cheers
> Marc
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elasticsearch+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/49ed97eb-6c2f-4c56-a551-ebc86c9559ca%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to