Class ReactiveElasticsearchTemplate
java.lang.Object
org.springframework.data.elasticsearch.core.AbstractReactiveElasticsearchTemplate
org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchTemplate
- All Implemented Interfaces:
Aware, ApplicationContextAware, ReactiveDocumentOperations, ReactiveElasticsearchOperations, ReactiveSearchOperations, ReactiveScriptOperations, ReactiveSqlOperations
Implementation of
ReactiveElasticsearchOperations using the new
Elasticsearch client.- Since:
- 4.4
- Author:
- Peter-Josef Meisch, Illia Ulianov, Junghoon Ban, maryantocinn
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceReactiveElasticsearchTemplate.ClientCallback<T extends Publisher<?>>Callback interface to be used with} for operating directly oninvalid @link
{@link #execute(ReactiveElasticsearchTemplate.ClientCallback<>)ReactiveElasticsearchClient.Nested classes/interfaces inherited from class AbstractReactiveElasticsearchTemplate
AbstractReactiveElasticsearchTemplate.DocumentCallback<T>, AbstractReactiveElasticsearchTemplate.Entities<T>, AbstractReactiveElasticsearchTemplate.IndexResponseMetaData, AbstractReactiveElasticsearchTemplate.ReadDocumentCallback<T>, AbstractReactiveElasticsearchTemplate.ReadSearchDocumentCallback<T>, AbstractReactiveElasticsearchTemplate.SearchDocumentCallback<T> -
Field Summary
Fields inherited from class AbstractReactiveElasticsearchTemplate
converter, entityCallbacks, entityOperations, mappingContext, observationRegistry, refreshPolicy, routingResolverFields inherited from interface ReactiveDocumentOperations
FLUX_SAVE_BULK_SIZE -
Constructor Summary
ConstructorsConstructorDescriptionReactiveElasticsearchTemplate(ReactiveElasticsearchClient client, ElasticsearchConverter converter) -
Method Summary
Modifier and TypeMethodDescriptionFlux<? extends AggregationContainer<?>> aggregate(Query query, Class<?> entityType, IndexCoordinates index) Perform an aggregation specified by the givenquery.bulkUpdate(List<UpdateQuery> queries, BulkOptions bulkOptions, IndexCoordinates index) Bulk update all objects.closePointInTime(String pit) Closes a point in timecluster()return aReactiveClusterOperationsinstance that uses the same client communication setup as this ElasticsearchOperations instance.count(Query query, Class<?> entityType, IndexCoordinates index) Count the number of documents matching the givenQuery.protected voidHook for subclasses to copy additional state duringAbstractReactiveElasticsearchTemplate.copy().delete(Object entity, IndexCoordinates index) Delete the given entity extracting index from entity metadata.delete(String id, IndexCoordinates index) Delete the entity with given id.delete(DeleteQuery query, Class<?> entityType, IndexCoordinates index) Delete the documents matching the givenQueryextracting index from entity metadata.deleteScript(String name) Deletes the script with the given nameprotected ReactiveElasticsearchTemplatedoCopy()doCount(Query query, Class<?> entityType, IndexCoordinates index) doDeleteById(String id, @Nullable String routing, IndexCoordinates index) doExists(String id, IndexCoordinates index) protected Flux<SearchDocument> doFind(Query query, Class<?> clazz, IndexCoordinates index) protected <T> Mono<SearchDocumentResponse> doFindForResponse(Query query, Class<?> clazz, IndexCoordinates index) protected <T> Mono<Tuple2<T, AbstractReactiveElasticsearchTemplate.IndexResponseMetaData>> doIndex(T entity, IndexCoordinates index) <T> Publisher<T> execute(ReactiveElasticsearchTemplate.ClientCallback<Publisher<T>> callback) Execute a callback with theReactiveElasticsearchClientand provide exception translation.exists(String id, IndexCoordinates index) Check if an entity with given id exists.<T> Mono<T> get(String id, Class<T> entityType, IndexCoordinates index) Fetch the entity with given id.Gest the script with the given name.Creates aQueryto find get all documents with given ids.Creates aReactiveIndexOperationsthat is bound to the given classindexOps(IndexCoordinates index) Creates aReactiveIndexOperationsthat is bound to the given indexCreates aQueryto find all documents.<T> Flux<MultiGetItem<T>> multiGet(Query query, Class<T> clazz, IndexCoordinates index) Execute a multiGet against elasticsearch for the given ids.openPointInTime(IndexCoordinates index, Duration keepAlive, Boolean ignoreUnavailable) Opens a point in time (pit) in Elasticsearch.Stores the given script in the Elasticsearch cluster.queryBuilderWithIds(List<String> ids) Creates aBaseQueryBuilderthat has the given ids setto the parameter value.reindex(ReindexRequest reindexRequest) Copies documents from a source to a destination.<T> Mono<T> save(T entity, IndexCoordinates index) Index the entity under the given type in the given index.<T> Flux<T> saveAll(Mono<? extends Collection<? extends T>> entitiesPublisher, IndexCoordinates index) Index entities in the given index.search(Query query, Class<?> entityType, Class<T> resultType, IndexCoordinates index) Search the index for entities matching the givenquery.Execute the sqlqueryagainst elasticsearch and return result asSqlResponsevoidsetApplicationContext(ApplicationContext applicationContext) voidsetObservationConvention(@Nullable ElasticsearchObservationConvention observationConvention) Set a customElasticsearchObservationConventionto override the default convention.submitReindex(ReindexRequest reindexRequest) Submits a reindex task.update(UpdateQuery updateQuery, IndexCoordinates index) Partial update of the document.updateByQuery(UpdateQuery updateQuery, IndexCoordinates index) Update document(s) by query.Methods inherited from class AbstractReactiveElasticsearchTemplate
aggregate, count, delete, delete, delete, exists, get, getElasticsearchConverter, getEntityRouting, getIndexCoordinatesFor, getIndexQuery, getPersistentEntityFor, getRefreshPolicy, logVersions, maybeCallbackAfterConvert, maybeCallbackAfterLoad, maybeCallbackAfterSave, maybeCallbackBeforeConvert, multiGet, save, save, save, saveAll, search, searchForHits, searchForHits, searchForPage, searchForPage, setEntityCallbacks, setObservationRegistry, setRefreshPolicy, suggest, suggest, withRefreshPolicy, withRoutingMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ReactiveDocumentOperations
bulkUpdate, save, save, save, save, saveAll, saveAllMethods inherited from interface ReactiveSearchOperations
count, openPointInTime, search, search, searchForHits, searchForHits, searchForPage, searchForPage
-
Constructor Details
-
ReactiveElasticsearchTemplate
public ReactiveElasticsearchTemplate(ReactiveElasticsearchClient client, ElasticsearchConverter converter)
-
-
Method Details
-
setApplicationContext
- Specified by:
setApplicationContextin interfaceApplicationContextAware- Overrides:
setApplicationContextin classAbstractReactiveElasticsearchTemplate- Throws:
BeansException
-
setObservationConvention
public void setObservationConvention(@Nullable ElasticsearchObservationConvention observationConvention) Set a customElasticsearchObservationConventionto override the default convention.- Parameters:
observationConvention- can be null.- Since:
- 6.1
-
save
Description copied from interface:ReactiveDocumentOperationsIndex the entity under the given type in the given index. If the index is null or empty the index name provided via entity metadata is used. Same for the type.- Specified by:
savein interfaceReactiveDocumentOperations- Overrides:
savein classAbstractReactiveElasticsearchTemplate- Type Parameters:
T-- Parameters:
entity- must not be null.index- the target index, must not be null- Returns:
- a
Monoemitting the saved entity.
-
exists
Description copied from interface:ReactiveDocumentOperationsCheck if an entity with given id exists.- Specified by:
existsin interfaceReactiveDocumentOperations- Overrides:
existsin classAbstractReactiveElasticsearchTemplate- Parameters:
id- the _id of the document to look for.index- the target index, must not be null- Returns:
- a
Monoemitting true if a matching document exists, false otherwise.
-
delete
Description copied from interface:ReactiveDocumentOperationsDelete the given entity extracting index from entity metadata.- Specified by:
deletein interfaceReactiveDocumentOperations- Overrides:
deletein classAbstractReactiveElasticsearchTemplate- Parameters:
entity- must not be null.index- the target index, must not be null- Returns:
- a
Monoemitting the id of the removed document.
-
delete
Description copied from interface:ReactiveDocumentOperationsDelete the entity with given id.- Specified by:
deletein interfaceReactiveDocumentOperations- Overrides:
deletein classAbstractReactiveElasticsearchTemplate- Parameters:
id- must not be null.index- the target index, must not be null- Returns:
- a
Monoemitting the id of the removed document.
-
search
public <T> Flux<SearchHit<T>> search(Query query, Class<?> entityType, Class<T> resultType, IndexCoordinates index) Description copied from interface:ReactiveSearchOperationsSearch the index for entities matching the givenquery.- Specified by:
searchin interfaceReactiveSearchOperations- Overrides:
searchin classAbstractReactiveElasticsearchTemplate- Type Parameters:
T-- Parameters:
query- must not be null.entityType- must not be null.resultType- the projection result type.index- the target index, must not be null- Returns:
- a
Fluxemitting matching entities one by one wrapped in aSearchHit.
-
count
Description copied from interface:ReactiveSearchOperationsCount the number of documents matching the givenQuery.- Specified by:
countin interfaceReactiveSearchOperations- Overrides:
countin classAbstractReactiveElasticsearchTemplate- Parameters:
query- must not be null.entityType- must not be null.index- the target index, must not be null- Returns:
- a
Monoemitting the nr of matching documents.
-
doIndex
protected <T> Mono<Tuple2<T, AbstractReactiveElasticsearchTemplate.IndexResponseMetaData>> doIndex(T entity, IndexCoordinates index) - Specified by:
doIndexin classAbstractReactiveElasticsearchTemplate
-
saveAll
public <T> Flux<T> saveAll(Mono<? extends Collection<? extends T>> entitiesPublisher, IndexCoordinates index) Description copied from interface:ReactiveDocumentOperationsIndex entities in the given index. If the index is null or empty the index name provided via entity metadata is used.- Type Parameters:
T-- Parameters:
entitiesPublisher- must not be null.index- the target index, must not be null- Returns:
- a
Fluxemitting saved entities.
-
doExists
- Specified by:
doExistsin classAbstractReactiveElasticsearchTemplate
-
delete
Description copied from interface:ReactiveDocumentOperationsDelete the documents matching the givenQueryextracting index from entity metadata.- Parameters:
query- must not be null.entityType- must not be null.index- the target index, must not be null- Returns:
- a
Monoemitting the number of the removed documents.
-
get
Description copied from interface:ReactiveDocumentOperationsFetch the entity with given id.- Type Parameters:
T-- Parameters:
id- must not be null.index- the target index, must not be null- Returns:
- the
Monoemitting the entity or signalling completion if none found.
-
reindex
Description copied from interface:ReactiveDocumentOperationsCopies documents from a source to a destination. The source can be any existing index, alias, or data stream. The destination must differ from the source. For example, you cannot reindex a data stream into itself. (@see https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html)- Parameters:
reindexRequest- reindex request parameters- Returns:
- a
Monoemitting the reindex response
-
submitReindex
Description copied from interface:ReactiveDocumentOperationsSubmits a reindex task. (@see https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html)- Parameters:
reindexRequest- reindex request parameters- Returns:
- a
Monoemitting the task id.
-
update
Description copied from interface:ReactiveDocumentOperationsPartial update of the document.- Parameters:
updateQuery- query defining the updateindex- the index where to update the records- Returns:
- a
Monoemitting the update response
-
updateByQuery
Description copied from interface:ReactiveDocumentOperationsUpdate document(s) by query.- Parameters:
updateQuery- query defining the update, must not be nullindex- the index where to update the records, must not be null- Returns:
- a
Monoemitting the update response
-
bulkUpdate
public Mono<Void> bulkUpdate(List<UpdateQuery> queries, BulkOptions bulkOptions, IndexCoordinates index) Description copied from interface:ReactiveDocumentOperationsBulk update all objects. Will do update.- Parameters:
queries- the queries to execute in bulkbulkOptions- options to be added to the bulk request
-
doDeleteById
- Specified by:
doDeleteByIdin classAbstractReactiveElasticsearchTemplate
-
multiGet
Description copied from interface:ReactiveDocumentOperationsExecute a multiGet against elasticsearch for the given ids.- Parameters:
query- the query defining the ids of the objects to getclazz- the type of the object to be returnedindex- the index(es) from which the objects are read.- Returns:
- flux with list of
MultiGetItems that contain the entities - See Also:
-
doCopy
- Specified by:
doCopyin classAbstractReactiveElasticsearchTemplate
-
customizeCopy
Description copied from class:AbstractReactiveElasticsearchTemplateHook for subclasses to copy additional state duringAbstractReactiveElasticsearchTemplate.copy(). Called after all common fields have been copied. The default implementation does nothing.- Overrides:
customizeCopyin classAbstractReactiveElasticsearchTemplate- Parameters:
copy- the new template instance to customize
-
doFind
- Specified by:
doFindin classAbstractReactiveElasticsearchTemplate
-
doCount
- Specified by:
doCountin classAbstractReactiveElasticsearchTemplate
-
doFindForResponse
protected <T> Mono<SearchDocumentResponse> doFindForResponse(Query query, Class<?> clazz, IndexCoordinates index) - Specified by:
doFindForResponsein classAbstractReactiveElasticsearchTemplate
-
aggregate
public Flux<? extends AggregationContainer<?>> aggregate(Query query, Class<?> entityType, IndexCoordinates index) Description copied from interface:ReactiveSearchOperationsPerform an aggregation specified by the givenquery.- Parameters:
query- must not be null.entityType- must not be null.index- the target index, must not be null- Returns:
- a
Fluxemitting matching aggregations one by one.
-
openPointInTime
public Mono<String> openPointInTime(IndexCoordinates index, Duration keepAlive, Boolean ignoreUnavailable) Description copied from interface:ReactiveSearchOperationsOpens a point in time (pit) in Elasticsearch.- Specified by:
openPointInTimein interfaceReactiveSearchOperations- Overrides:
openPointInTimein classAbstractReactiveElasticsearchTemplate- Parameters:
index- the index name(s) to usekeepAlive- the duration the pit shoult be kept aliveignoreUnavailable- if {$literal true} the call will fail if any of the indices is missing or closed- Returns:
- the pit identifier
-
closePointInTime
Description copied from interface:ReactiveSearchOperationsCloses a point in time- Specified by:
closePointInTimein interfaceReactiveSearchOperations- Overrides:
closePointInTimein classAbstractReactiveElasticsearchTemplate- Parameters:
pit- the pit identifier as returned byReactiveSearchOperations.openPointInTime(IndexCoordinates, Duration, Boolean)- Returns:
- true on success
-
putScript
Description copied from interface:ReactiveScriptOperationsStores the given script in the Elasticsearch cluster.- Specified by:
putScriptin interfaceReactiveScriptOperations- Overrides:
putScriptin classAbstractReactiveElasticsearchTemplate- Returns:
- {true if successful
-
getScript
Description copied from interface:ReactiveScriptOperationsGest the script with the given name.- Specified by:
getScriptin interfaceReactiveScriptOperations- Overrides:
getScriptin classAbstractReactiveElasticsearchTemplate- Parameters:
name- the name of the script- Returns:
- Script or null when a script with this name does not exist.
-
deleteScript
Description copied from interface:ReactiveScriptOperationsDeletes the script with the given name- Specified by:
deleteScriptin interfaceReactiveScriptOperations- Overrides:
deleteScriptin classAbstractReactiveElasticsearchTemplate- Parameters:
name- the name of the script.- Returns:
- true if the request was acknowledged by the cluster.
-
getVendor
- Specified by:
getVendorin classAbstractReactiveElasticsearchTemplate- Returns:
- the vendor name of the used cluster and client library
-
getRuntimeLibraryVersion
- Specified by:
getRuntimeLibraryVersionin classAbstractReactiveElasticsearchTemplate- Returns:
- the version of the used client runtime library.
-
getClusterVersion
- Specified by:
getClusterVersionin classAbstractReactiveElasticsearchTemplate
-
indexOps
Description copied from interface:ReactiveElasticsearchOperationsCreates aReactiveIndexOperationsthat is bound to the given index- Parameters:
index- IndexCoordinates specifying the index- Returns:
- ReactiveIndexOperations implementation
-
indexOps
Description copied from interface:ReactiveElasticsearchOperationsCreates aReactiveIndexOperationsthat is bound to the given class- Parameters:
clazz- the entity clazz specifiying the index information- Returns:
- ReactiveIndexOperations implementation
-
cluster
Description copied from interface:ReactiveElasticsearchOperationsreturn aReactiveClusterOperationsinstance that uses the same client communication setup as this ElasticsearchOperations instance.- Returns:
- ClusterOperations implementation
-
matchAllQuery
Description copied from interface:ReactiveSearchOperationsCreates aQueryto find all documents. Must be implemented by the concrete implementations to provide an appropriate query using the respective client.- Returns:
- a query to find all documents
-
idsQuery
Description copied from interface:ReactiveSearchOperationsCreates aQueryto find get all documents with given ids. Must be implemented by the concrete implementations to provide an appropriate query using the respective client.- Parameters:
ids- the list of ids must not be null- Returns:
- query returning the documents with the given ids
-
queryBuilderWithIds
Description copied from interface:ReactiveSearchOperationsCreates aBaseQueryBuilderthat has the given ids setto the parameter value. No other properties of the bulder are set.- Parameters:
ids- the list of ids must not be null- Returns:
- query returning the documents with the given ids
-
search
Description copied from interface:ReactiveSqlOperationsExecute the sqlqueryagainst elasticsearch and return result asSqlResponse- Parameters:
query- the query to execute- Returns:
SqlResponsecontaining the list of found objects
-
execute
public <T> Publisher<T> execute(ReactiveElasticsearchTemplate.ClientCallback<Publisher<T>> callback) Execute a callback with theReactiveElasticsearchClientand provide exception translation.- Type Parameters:
T- the type returned from the callback- Parameters:
callback- the callback to execute, must not be null- Returns:
- the callback result
-