# IndexManager
Date: 2012-02-24

## com.google.appengine.api.search
Interface IndexManager

    public interface IndexManager

A manager capable of listing available indexes, which can be queried about their metadata or have index/delete/search operations performed on them. For example:

     IndexManager indexManager = IndexManagerFactory.newIndexManager();
     List<Index> indexes = indexManager.listIndexes();
     for (Index index : indexes) {
       index.getName();
       index.getNamespace();
       index.getConsistency();
       index.search("query");
     }

IndexManager is also responsible for creating new indexes. For example:

     IndexManager indexManager = IndexManagerFactory.newIndexManager();
     Index index = indexManager.getIndex(IndexSpec.newBuilder().setName("myindex"));

Method Summary
`Index` `getIndex(IndexSpec.Builder builder)` Returns an instance of `Index` corresponding to the specification built from the given `builder`.
`Index` `getIndex(IndexSpec spec)` Returns an instance of `Index` corresponding to the provided specification.
`java.lang.String` `getNamespace()` Returns the namespace associated with this index manager.
`ListIndexesResponse` `listIndexes(ListIndexesRequest request)` Lists the indexes available.
`java.util.concurrent.Future<ListIndexesResponse>` `listIndexesAsync(ListIndexesRequest request)` Lists the indexes available asynchronously.

Method Detail

### getIndex

    Index getIndex(IndexSpec spec)

  Returns an instance of `Index` corresponding to the provided specification.

  Returns:
    an instance of `Index` corresponding to the given `spec`

### getIndex

    Index getIndex(IndexSpec.Builder builder)

  Returns an instance of `Index` corresponding to the specification built from the given `builder`.

  Returns:
    an instance of `Index` corresponding to the given `spec`

### getNamespace

    java.lang.String getNamespace()

  Returns the namespace associated with this index manager. Each manager is assigned one namespace and all operations, such as listing documents, indexes inherit it. Also, when you fetch an index, the namespace of this index manager is passed to the returned index.

  Returns:
    the namespace associated with this index manager

### listIndexes

    ListIndexesResponse listIndexes(ListIndexesRequest request)

  Lists the indexes available. The following code fragment shows how to list the schemas of each available `Index`.

         // Get the index manager for the default namespace
         IndexManager indexManager = IndexManagerFactory.newIndexManager();

         // List the first page of indexes available and retrieve schemas
         ListIndexesResponse response = indexManager.listIndexes(
             ListIndexesRequest.newBuilder().setSchemaFetched(true).build());

         // List out elements of Schema
         for (Index index : response) {
           String name = index.getName();
           Schema schema = index.getSchema();
           for (String fieldName : schema.getFieldNames()) {
              List<FieldType> typesForField = schema.getFieldTypes(fieldName);
           }
         }

  Parameters:
    `request` - a request specifying which indexes to list
  Returns:
    a `ListIndexesResponse` containing list of existing indexes
  Throws:
    `ListIndexesException` - if there is a failure in the search service listing indexes

### listIndexesAsync

    java.util.concurrent.Future<ListIndexesResponse> listIndexesAsync(ListIndexesRequest request)

  Lists the indexes available asynchronously.

  Parameters:
    `request` - a request specifying which indexes to list
  Returns:
    a `Future` that will allow getting a `ListIndexesResponse` containing a list of existing indexes