/* * Licensed to Elasticsearch under one or more contributor * license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright * ownership. Elasticsearch licenses this file to you under * the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.elasticsearch.client; import org.elasticsearch.action.ActionFuture; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.bulk.BulkRequestBuilder; import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.action.count.CountRequest; import org.elasticsearch.action.count.CountRequestBuilder; import org.elasticsearch.action.count.CountResponse; import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.action.delete.DeleteRequestBuilder; import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.exists.ExistsRequest; import org.elasticsearch.action.exists.ExistsRequestBuilder; import org.elasticsearch.action.exists.ExistsResponse; import org.elasticsearch.action.explain.ExplainRequest; import org.elasticsearch.action.explain.ExplainRequestBuilder; import org.elasticsearch.action.explain.ExplainResponse; import org.elasticsearch.action.fieldstats.FieldStatsRequest; import org.elasticsearch.action.fieldstats.FieldStatsRequestBuilder; import org.elasticsearch.action.fieldstats.FieldStatsResponse; import org.elasticsearch.action.get.*; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexRequestBuilder; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.indexedscripts.delete.DeleteIndexedScriptRequest; import org.elasticsearch.action.indexedscripts.delete.DeleteIndexedScriptRequestBuilder; import org.elasticsearch.action.indexedscripts.delete.DeleteIndexedScriptResponse; import org.elasticsearch.action.indexedscripts.get.GetIndexedScriptRequest; import org.elasticsearch.action.indexedscripts.get.GetIndexedScriptRequestBuilder; import org.elasticsearch.action.indexedscripts.get.GetIndexedScriptResponse; import org.elasticsearch.action.indexedscripts.put.PutIndexedScriptRequest; import org.elasticsearch.action.indexedscripts.put.PutIndexedScriptRequestBuilder; import org.elasticsearch.action.indexedscripts.put.PutIndexedScriptResponse; import org.elasticsearch.action.percolate.*; import org.elasticsearch.action.search.*; import org.elasticsearch.action.suggest.SuggestRequest; import org.elasticsearch.action.suggest.SuggestRequestBuilder; import org.elasticsearch.action.suggest.SuggestResponse; import org.elasticsearch.action.termvectors.*; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.action.update.UpdateRequestBuilder; import org.elasticsearch.action.update.UpdateResponse; import org.elasticsearch.client.support.Headers; import org.elasticsearch.common.Nullable; import org.elasticsearch.common.lease.Releasable; import org.elasticsearch.common.settings.Settings; /** * A client provides a one stop interface for performing actions/operations against the cluster. * <p> * All operations performed are asynchronous by nature. Each action/operation has two flavors, the first * simply returns an {@link org.elasticsearch.action.ActionFuture}, while the second accepts an * {@link org.elasticsearch.action.ActionListener}. * <p> * A client can either be retrieved from a {@link org.elasticsearch.node.Node} started, or connected remotely * to one or more nodes using {@link org.elasticsearch.client.transport.TransportClient}. * * @see org.elasticsearch.node.Node#client() * @see org.elasticsearch.client.transport.TransportClient */ public interface Client extends ElasticsearchClient, Releasable { String CLIENT_TYPE_SETTING = "client.type"; /** * The admin client that can be used to perform administrative operations. */ AdminClient admin(); /** * Index a JSON source associated with a given index and type. * <p> * The id is optional, if it is not provided, one will be generated automatically. * * @param request The index request * @return The result future * @see Requests#indexRequest(String) */ ActionFuture<IndexResponse> index(IndexRequest request); /** * Index a document associated with a given index and type. * <p> * The id is optional, if it is not provided, one will be generated automatically. * * @param request The index request * @param listener A listener to be notified with a result * @see Requests#indexRequest(String) */ void index(IndexRequest request, ActionListener<IndexResponse> listener); /** * Index a document associated with a given index and type. * <p> * The id is optional, if it is not provided, one will be generated automatically. */ IndexRequestBuilder prepareIndex(); /** * Updates a document based on a script. * * @param request The update request * @return The result future */ ActionFuture<UpdateResponse> update(UpdateRequest request); /** * Updates a document based on a script. * * @param request The update request * @param listener A listener to be notified with a result */ void update(UpdateRequest request, ActionListener<UpdateResponse> listener); /** * Updates a document based on a script. */ UpdateRequestBuilder prepareUpdate(); /** * Updates a document based on a script. */ UpdateRequestBuilder prepareUpdate(String index, String type, String id); /** * Index a document associated with a given index and type. * <p> * The id is optional, if it is not provided, one will be generated automatically. * * @param index The index to index the document to * @param type The type to index the document to */ IndexRequestBuilder prepareIndex(String index, String type); /** * Index a document associated with a given index and type. * <p> * The id is optional, if it is not provided, one will be generated automatically. * * @param index The index to index the document to * @param type The type to index the document to * @param id The id of the document */ IndexRequestBuilder prepareIndex(String index, String type, @Nullable String id); /** * Deletes a document from the index based on the index, type and id. * * @param request The delete request * @return The result future * @see Requests#deleteRequest(String) */ ActionFuture<DeleteResponse> delete(DeleteRequest request); /** * Deletes a document from the index based on the index, type and id. * * @param request The delete request * @param listener A listener to be notified with a result * @see Requests#deleteRequest(String) */ void delete(DeleteRequest request, ActionListener<DeleteResponse> listener); /** * Deletes a document from the index based on the index, type and id. */ DeleteRequestBuilder prepareDelete(); /** * Deletes a document from the index based on the index, type and id. * * @param index The index to delete the document from * @param type The type of the document to delete * @param id The id of the document to delete */ DeleteRequestBuilder prepareDelete(String index, String type, String id); /** * Executes a bulk of index / delete operations. * * @param request The bulk request * @return The result future * @see org.elasticsearch.client.Requests#bulkRequest() */ ActionFuture<BulkResponse> bulk(BulkRequest request); /** * Executes a bulk of index / delete operations. * * @param request The bulk request * @param listener A listener to be notified with a result * @see org.elasticsearch.client.Requests#bulkRequest() */ void bulk(BulkRequest request, ActionListener<BulkResponse> listener); /** * Executes a bulk of index / delete operations. */ BulkRequestBuilder prepareBulk(); /** * Gets the document that was indexed from an index with a type and id. * * @param request The get request * @return The result future * @see Requests#getRequest(String) */ ActionFuture<GetResponse> get(GetRequest request); /** * Gets the document that was indexed from an index with a type and id. * * @param request The get request * @param listener A listener to be notified with a result * @see Requests#getRequest(String) */ void get(GetRequest request, ActionListener<GetResponse> listener); /** * Gets the document that was indexed from an index with a type and id. */ GetRequestBuilder prepareGet(); /** * Gets the document that was indexed from an index with a type (optional) and id. */ GetRequestBuilder prepareGet(String index, @Nullable String type, String id); /** * Put an indexed script */ PutIndexedScriptRequestBuilder preparePutIndexedScript(); /** * Put the indexed script */ PutIndexedScriptRequestBuilder preparePutIndexedScript(@Nullable String scriptLang, String id, String source); /** * delete an indexed script */ void deleteIndexedScript(DeleteIndexedScriptRequest request, ActionListener<DeleteIndexedScriptResponse> listener); /** * Delete an indexed script * * @param request The put request * @return The result future */ ActionFuture<DeleteIndexedScriptResponse> deleteIndexedScript(DeleteIndexedScriptRequest request); /** * Delete an indexed script */ DeleteIndexedScriptRequestBuilder prepareDeleteIndexedScript(); /** * Delete an indexed script */ DeleteIndexedScriptRequestBuilder prepareDeleteIndexedScript(@Nullable String scriptLang, String id); /** * Put an indexed script */ void putIndexedScript(PutIndexedScriptRequest request, ActionListener<PutIndexedScriptResponse> listener); /** * Put an indexed script * * @param request The put request * @return The result future */ ActionFuture<PutIndexedScriptResponse> putIndexedScript(PutIndexedScriptRequest request); /** * Get an indexed script */ GetIndexedScriptRequestBuilder prepareGetIndexedScript(); /** * Get the indexed script */ GetIndexedScriptRequestBuilder prepareGetIndexedScript(@Nullable String scriptLang, String id); /** * Get an indexed script */ void getIndexedScript(GetIndexedScriptRequest request, ActionListener<GetIndexedScriptResponse> listener); /** * Gets the document that was indexed from an index with a type and id. * * @param request The get request * @return The result future * @see Requests#getRequest(String) */ ActionFuture<GetIndexedScriptResponse> getIndexedScript(GetIndexedScriptRequest request); /** * Multi get documents. */ ActionFuture<MultiGetResponse> multiGet(MultiGetRequest request); /** * Multi get documents. */ void multiGet(MultiGetRequest request, ActionListener<MultiGetResponse> listener); /** * Multi get documents. */ MultiGetRequestBuilder prepareMultiGet(); /** * A count of all the documents matching a specific query. * * @param request The count request * @return The result future * @see Requests#countRequest(String...) * @deprecated use {@link #search(SearchRequest)} instead and set size to 0 */ @Deprecated ActionFuture<CountResponse> count(CountRequest request); /** * A count of all the documents matching a specific query. * * @param request The count request * @param listener A listener to be notified of the result * @see Requests#countRequest(String...) * @deprecated use {@link #search(SearchRequest, ActionListener)} instead and set size to 0 */ @Deprecated void count(CountRequest request, ActionListener<CountResponse> listener); /** * A count of all the documents matching a specific query. * @deprecated use {@link #prepareSearch(String...)} instead and set size to 0 */ @Deprecated CountRequestBuilder prepareCount(String... indices); /** * Checks existence of any documents matching a specific query. * * @param request The exists request * @return The result future * @deprecated use {@link #search(SearchRequest)} instead and set `size` to `0` and `terminate_after` to `1` */ @Deprecated ActionFuture<ExistsResponse> exists(ExistsRequest request); /** * Checks existence of any documents matching a specific query. * * @param request The exists request * @param listener A listener to be notified of the result * @deprecated use {@link #search(SearchRequest, ActionListener)} instead and set `size` to `0` and `terminate_after` to `1` */ @Deprecated void exists(ExistsRequest request, ActionListener<ExistsResponse> listener); /** * Checks existence of any documents matching a specific query. * @deprecated use {@link #prepareSearch(String...)} instead and set `size` to `0` and `terminate_after` to `1` */ @Deprecated ExistsRequestBuilder prepareExists(String... indices); /** * Suggestion matching a specific phrase. * * @param request The suggest request * @return The result future * @see Requests#suggestRequest(String...) */ ActionFuture<SuggestResponse> suggest(SuggestRequest request); /** * Suggestions matching a specific phrase. * * @param request The suggest request * @param listener A listener to be notified of the result * @see Requests#suggestRequest(String...) */ void suggest(SuggestRequest request, ActionListener<SuggestResponse> listener); /** * Suggestions matching a specific phrase. */ SuggestRequestBuilder prepareSuggest(String... indices); /** * Search across one or more indices and one or more types with a query. * * @param request The search request * @return The result future * @see Requests#searchRequest(String...) */ ActionFuture<SearchResponse> search(SearchRequest request); /** * Search across one or more indices and one or more types with a query. * * @param request The search request * @param listener A listener to be notified of the result * @see Requests#searchRequest(String...) */ void search(SearchRequest request, ActionListener<SearchResponse> listener); /** * Search across one or more indices and one or more types with a query. */ SearchRequestBuilder prepareSearch(String... indices); /** * A search scroll request to continue searching a previous scrollable search request. * * @param request The search scroll request * @return The result future * @see Requests#searchScrollRequest(String) */ ActionFuture<SearchResponse> searchScroll(SearchScrollRequest request); /** * A search scroll request to continue searching a previous scrollable search request. * * @param request The search scroll request * @param listener A listener to be notified of the result * @see Requests#searchScrollRequest(String) */ void searchScroll(SearchScrollRequest request, ActionListener<SearchResponse> listener); /** * A search scroll request to continue searching a previous scrollable search request. */ SearchScrollRequestBuilder prepareSearchScroll(String scrollId); /** * Performs multiple search requests. */ ActionFuture<MultiSearchResponse> multiSearch(MultiSearchRequest request); /** * Performs multiple search requests. */ void multiSearch(MultiSearchRequest request, ActionListener<MultiSearchResponse> listener); /** * Performs multiple search requests. */ MultiSearchRequestBuilder prepareMultiSearch(); /** * An action that returns the term vectors for a specific document. * * @param request The term vector request * @return The response future */ ActionFuture<TermVectorsResponse> termVectors(TermVectorsRequest request); /** * An action that returns the term vectors for a specific document. * * @param request The term vector request */ void termVectors(TermVectorsRequest request, ActionListener<TermVectorsResponse> listener); /** * Builder for the term vector request. */ TermVectorsRequestBuilder prepareTermVectors(); /** * Builder for the term vector request. * * @param index The index to load the document from * @param type The type of the document * @param id The id of the document */ TermVectorsRequestBuilder prepareTermVectors(String index, String type, String id); /** * An action that returns the term vectors for a specific document. * * @param request The term vector request * @return The response future */ @Deprecated ActionFuture<TermVectorsResponse> termVector(TermVectorsRequest request); /** * An action that returns the term vectors for a specific document. * * @param request The term vector request */ @Deprecated void termVector(TermVectorsRequest request, ActionListener<TermVectorsResponse> listener); /** * Builder for the term vector request. */ @Deprecated TermVectorsRequestBuilder prepareTermVector(); /** * Builder for the term vector request. * * @param index The index to load the document from * @param type The type of the document * @param id The id of the document */ @Deprecated TermVectorsRequestBuilder prepareTermVector(String index, String type, String id); /** * Multi get term vectors. */ ActionFuture<MultiTermVectorsResponse> multiTermVectors(MultiTermVectorsRequest request); /** * Multi get term vectors. */ void multiTermVectors(MultiTermVectorsRequest request, ActionListener<MultiTermVectorsResponse> listener); /** * Multi get term vectors. */ MultiTermVectorsRequestBuilder prepareMultiTermVectors(); /** * Percolates a request returning the matches documents. */ ActionFuture<PercolateResponse> percolate(PercolateRequest request); /** * Percolates a request returning the matches documents. */ void percolate(PercolateRequest request, ActionListener<PercolateResponse> listener); /** * Percolates a request returning the matches documents. */ PercolateRequestBuilder preparePercolate(); /** * Performs multiple percolate requests. */ ActionFuture<MultiPercolateResponse> multiPercolate(MultiPercolateRequest request); /** * Performs multiple percolate requests. */ void multiPercolate(MultiPercolateRequest request, ActionListener<MultiPercolateResponse> listener); /** * Performs multiple percolate requests. */ MultiPercolateRequestBuilder prepareMultiPercolate(); /** * Computes a score explanation for the specified request. * * @param index The index this explain is targeted for * @param type The type this explain is targeted for * @param id The document identifier this explain is targeted for */ ExplainRequestBuilder prepareExplain(String index, String type, String id); /** * Computes a score explanation for the specified request. * * @param request The request encapsulating the query and document identifier to compute a score explanation for */ ActionFuture<ExplainResponse> explain(ExplainRequest request); /** * Computes a score explanation for the specified request. * * @param request The request encapsulating the query and document identifier to compute a score explanation for * @param listener A listener to be notified of the result */ void explain(ExplainRequest request, ActionListener<ExplainResponse> listener); /** * Clears the search contexts associated with specified scroll ids. */ ClearScrollRequestBuilder prepareClearScroll(); /** * Clears the search contexts associated with specified scroll ids. */ ActionFuture<ClearScrollResponse> clearScroll(ClearScrollRequest request); /** * Clears the search contexts associated with specified scroll ids. */ void clearScroll(ClearScrollRequest request, ActionListener<ClearScrollResponse> listener); FieldStatsRequestBuilder prepareFieldStats(); ActionFuture<FieldStatsResponse> fieldStats(FieldStatsRequest request); void fieldStats(FieldStatsRequest request, ActionListener<FieldStatsResponse> listener); /** * Returns this clients settings */ Settings settings(); Headers headers(); }