com.google.appengine.api.search

## Interface SearchService

-     public interface SearchService

  The SearchService is used to get available indexes, which can be queried about their metadata or have index/delete/search operations performed on them. For example:

       SearchService searchService = SearchServiceFactory.getSearchService();
       GetResponse<Index> response = searchService.getIndexes(
           GetIndexesRequest.newBuilder());
       for (Index index : response) {
         index.getName();
         index.getNamespace();
         index.search("query");
       }

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

       SearchService searchService = SearchServiceFactory.getSearchService();
       Index index = searchService.getIndex(IndexSpec.newBuilder().setName("myindex"));

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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.
    `GetResponse<Index>` | `getIndexes(GetIndexesRequest.Builder builder)` Gets the indexes specified in the request built from the `builder`.
    `GetResponse<Index>` | `getIndexes(GetIndexesRequest request)` Gets the indexes specified.
    `java.util.concurrent.Future<GetResponse<Index>>` | `getIndexesAsync(GetIndexesRequest.Builder builder)` Gets the indexes asynchronously for those specified in the request built from the `builder`.
    `java.util.concurrent.Future<GetResponse<Index>>` | `getIndexesAsync(GetIndexesRequest request)` Gets the indexes requested asynchronously.
    `java.lang.String` | `getNamespace()` Returns the namespace associated with this search service.

- - ### 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 search service. Each service instance is assigned one namespace and all operations, such as listing documents, indexes inherit it. Also, when you get an index, the namespace of this service is passed to the returned index.
      Returns:
        the namespace associated with this search service.

    - #### getIndexes

          GetResponse<Index> getIndexes(GetIndexesRequest request)

      Gets the indexes specified. The following code fragment shows how to get the schemas of each available `Index`.

             // Get the SearchService for the default namespace
             SearchService searchService = SearchServiceFactory.newSearchService();

             // Get the first page of indexes available and retrieve schemas
             GetResponse response = searchService.getIndexes(
                 GetIndexesRequest.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 typesForField = schema.getFieldTypes(fieldName);
               }
             }

      Parameters:
        `request` - a request specifying which indexes to get
      Returns:
        a `GetResponse` containing list of existing indexes
      Throws:
        `GetException` - if there is a failure in the search service getting indexes

    - #### getIndexes

          GetResponse<Index> getIndexes(GetIndexesRequest.Builder builder)

      Gets the indexes specified in the request built from the `builder`.
      Parameters:
        `builder` - a builder to be used to construct a `GetIndexesRequest` specifying which indexes to get
      Returns:
        a `GetResponse` containing list of existing indexes

    - #### getIndexesAsync

          java.util.concurrent.Future<GetResponse<Index>> getIndexesAsync(GetIndexesRequest request)

      Gets the indexes requested asynchronously.
      Parameters:
        `request` - a request specifying which indexes to get
      Returns:
        a `Future` that will allow getting a `GetResponse` containing a list of existing indexes

    - #### getIndexesAsync

          java.util.concurrent.Future<GetResponse<Index>> getIndexesAsync(GetIndexesRequest.Builder builder)

      Gets the indexes asynchronously for those specified in the request built from the `builder`.
      Parameters:
        `builder` - a builder to be used to construct a `GetIndexesRequest` specifying which indexes to get
      Returns:
        a `Future` that will allow getting a `GetResponse` containing a list of existing indexes