org.elasticsearch.client.internal.Client Maven / Gradle / Ivy
Show all versions of elasticsearch Show documentation
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
package org.elasticsearch.client.internal;
import org.elasticsearch.action.ActionFuture;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.DocWriteResponse;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteRequestBuilder;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.explain.ExplainRequest;
import org.elasticsearch.action.explain.ExplainRequestBuilder;
import org.elasticsearch.action.explain.ExplainResponse;
import org.elasticsearch.action.fieldcaps.FieldCapabilitiesRequest;
import org.elasticsearch.action.fieldcaps.FieldCapabilitiesRequestBuilder;
import org.elasticsearch.action.fieldcaps.FieldCapabilitiesResponse;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetRequestBuilder;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.get.MultiGetRequest;
import org.elasticsearch.action.get.MultiGetRequestBuilder;
import org.elasticsearch.action.get.MultiGetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.action.search.ClearScrollRequest;
import org.elasticsearch.action.search.ClearScrollRequestBuilder;
import org.elasticsearch.action.search.ClearScrollResponse;
import org.elasticsearch.action.search.MultiSearchRequest;
import org.elasticsearch.action.search.MultiSearchRequestBuilder;
import org.elasticsearch.action.search.MultiSearchResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchScrollRequest;
import org.elasticsearch.action.search.SearchScrollRequestBuilder;
import org.elasticsearch.action.termvectors.MultiTermVectorsRequest;
import org.elasticsearch.action.termvectors.MultiTermVectorsRequestBuilder;
import org.elasticsearch.action.termvectors.MultiTermVectorsResponse;
import org.elasticsearch.action.termvectors.TermVectorsRequest;
import org.elasticsearch.action.termvectors.TermVectorsRequestBuilder;
import org.elasticsearch.action.termvectors.TermVectorsResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateRequestBuilder;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.common.settings.Setting;
import org.elasticsearch.common.settings.Setting.Property;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.core.Nullable;
import java.util.Map;
import java.util.concurrent.Executor;
/**
* A client provides a one stop interface for performing actions/operations against the cluster.
*
* 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}.
*
* A client can be retrieved from a started {@link org.elasticsearch.node.Node}.
*
* @see org.elasticsearch.node.Node#client()
*/
public interface Client extends ElasticsearchClient {
// Note: This setting is registered only for bwc. The value is never read.
Setting CLIENT_TYPE_SETTING_S = new Setting<>("client.type", "node", (s) -> {
return switch (s) {
case "node", "transport" -> s;
default -> throw new IllegalArgumentException("Can't parse [client.type] must be one of [node, transport]");
};
}, Property.NodeScope, Property.Deprecated);
/**
* The admin client that can be used to perform administrative operations.
*/
AdminClient admin();
/**
* Index a JSON source associated with a given index.
*
* The id is optional, if it is not provided, one will be generated automatically.
*
* @param request The index request
* @return The result future
*/
ActionFuture index(IndexRequest request);
/**
* Index a document associated with a given index.
*
* 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
*/
void index(IndexRequest request, ActionListener listener);
/**
* Index a document associated with a given index.
*
* The id is optional, if it is not provided, one will be generated automatically.
*/
IndexRequestBuilder prepareIndex();
/**
* Index a document associated with a given index.
*
* The id is optional, if it is not provided, one will be generated automatically.
*
* @param index The index to index the document to
*/
IndexRequestBuilder prepareIndex(String index);
/**
* Updates a document based on a script.
*
* @param request The update request
* @return The result future
*/
ActionFuture 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 listener);
/**
* Updates a document based on a script.
*/
UpdateRequestBuilder prepareUpdate();
/**
* Updates a document based on a script.
*/
UpdateRequestBuilder prepareUpdate(String index, String id);
/**
* Deletes a document from the index based on the index and id.
*
* @param request The delete request
* @return The result future
*/
ActionFuture delete(DeleteRequest request);
/**
* Deletes a document from the index based on the index and id.
*
* @param request The delete request
* @param listener A listener to be notified with a result
*/
void delete(DeleteRequest request, ActionListener listener);
/**
* Deletes a document from the index based on the index and id.
*/
DeleteRequestBuilder prepareDelete();
/**
* Deletes a document from the index based on the index and id.
*
* @param index The index to delete the document from
* @param id The id of the document to delete
*/
DeleteRequestBuilder prepareDelete(String index, String id);
/**
* Executes a bulk of index / delete operations.
*
* @param request The bulk request
* @return The result future
*/
ActionFuture 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
*/
void bulk(BulkRequest request, ActionListener listener);
/**
* Executes a bulk of index / delete operations.
*/
BulkRequestBuilder prepareBulk();
/**
* Executes a bulk of index / delete operations with default index
*/
BulkRequestBuilder prepareBulk(@Nullable String globalIndex);
/**
* Gets the document that was indexed from an index with an id.
*
* @param request The get request
* @return The result future
*/
ActionFuture get(GetRequest request);
/**
* Gets the document that was indexed from an index with an id.
*
* @param request The get request
* @param listener A listener to be notified with a result
*/
void get(GetRequest request, ActionListener listener);
/**
* Gets the document that was indexed from an index with an id.
*/
GetRequestBuilder prepareGet();
/**
* Gets the document that was indexed from an index with an id.
*/
GetRequestBuilder prepareGet(String index, String id);
/**
* Multi get documents.
*/
ActionFuture multiGet(MultiGetRequest request);
/**
* Multi get documents.
*/
void multiGet(MultiGetRequest request, ActionListener listener);
/**
* Multi get documents.
*/
MultiGetRequestBuilder prepareMultiGet();
/**
* Search across one or more indices with a query.
*
* @param request The search request
* @return The result future
*/
ActionFuture search(SearchRequest request);
/**
* Search across one or more indices with a query.
*
* @param request The search request
* @param listener A listener to be notified of the result
*/
void search(SearchRequest request, ActionListener listener);
/**
* Search across one or more indices 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
*/
ActionFuture 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
*/
void searchScroll(SearchScrollRequest request, ActionListener listener);
/**
* A search scroll request to continue searching a previous scrollable search request.
*/
SearchScrollRequestBuilder prepareSearchScroll(String scrollId);
/**
* Performs multiple search requests.
*/
ActionFuture multiSearch(MultiSearchRequest request);
/**
* Performs multiple search requests.
*/
void multiSearch(MultiSearchRequest request, ActionListener 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 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 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 id The id of the document
*/
TermVectorsRequestBuilder prepareTermVectors(String index, String id);
/**
* Multi get term vectors.
*/
ActionFuture multiTermVectors(MultiTermVectorsRequest request);
/**
* Multi get term vectors.
*/
void multiTermVectors(MultiTermVectorsRequest request, ActionListener listener);
/**
* Multi get term vectors.
*/
MultiTermVectorsRequestBuilder prepareMultiTermVectors();
/**
* Computes a score explanation for the specified request.
*
* @param index The index this explain is targeted for
* @param id The document identifier this explain is targeted for
*/
ExplainRequestBuilder prepareExplain(String index, 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 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 listener);
/**
* Clears the search contexts associated with specified scroll ids.
*/
ClearScrollRequestBuilder prepareClearScroll();
/**
* Clears the search contexts associated with specified scroll ids.
*/
ActionFuture clearScroll(ClearScrollRequest request);
/**
* Clears the search contexts associated with specified scroll ids.
*/
void clearScroll(ClearScrollRequest request, ActionListener listener);
/**
* Builder for the field capabilities request.
*/
FieldCapabilitiesRequestBuilder prepareFieldCaps(String... indices);
/**
* An action that returns the field capabilities from the provided request
*/
ActionFuture fieldCaps(FieldCapabilitiesRequest request);
/**
* An action that returns the field capabilities from the provided request
*/
void fieldCaps(FieldCapabilitiesRequest request, ActionListener listener);
/**
* Returns this clients settings
*/
Settings settings();
/**
* Returns a new lightweight Client that applies all given headers to each of the requests
* issued from it.
*/
Client filterWithHeader(Map headers);
/**
* Returns a client to a remote cluster with the given cluster alias.
*
* @throws IllegalArgumentException if the given clusterAlias doesn't exist
* @throws UnsupportedOperationException if this functionality is not available on this client.
*/
default RemoteClusterClient getRemoteClusterClient(String clusterAlias, Executor responseExecutor) {
throw new UnsupportedOperationException("this client doesn't support remote cluster connections");
}
}