Interface SearchProjectionFactory<R,E>
-
- Type Parameters:
R
- The type of entity references, i.e. the type of objects returned forentity reference projections
.E
- The type of entities, i.e. the type of objects returned forentity projections
.
- All Known Subinterfaces:
ElasticsearchSearchProjectionFactory<R,E>
,LuceneSearchProjectionFactory<R,E>
- All Known Implementing Classes:
DelegatingSearchProjectionFactory
public interface SearchProjectionFactory<R,E>
A factory for search projections.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default <P1,P2,T>
CompositeProjectionOptionsStep<?,T>composite(BiFunction<P1,P2,T> transformer, ProjectionFinalStep<P1> dslFinalStep1, ProjectionFinalStep<P2> dslFinalStep2)
Create a projection that will compose a custom object based on two almost-built projections.<P1,P2,T>
CompositeProjectionOptionsStep<?,T>composite(BiFunction<P1,P2,T> transformer, SearchProjection<P1> projection1, SearchProjection<P2> projection2)
Create a projection that will compose a custom object based on two given projections.default <T> CompositeProjectionOptionsStep<?,T>
composite(Function<List<?>,T> transformer, ProjectionFinalStep<?>... dslFinalSteps)
Create a projection that will compose a custom object based on the given almost-built projections.<T> CompositeProjectionOptionsStep<?,T>
composite(Function<List<?>,T> transformer, SearchProjection<?>... projections)
Create a projection that will compose a custom object based on the given projections.default <P,T>
CompositeProjectionOptionsStep<?,T>composite(Function<P,T> transformer, ProjectionFinalStep<P> dslFinalStep)
Create a projection that will compose a custom object based on one almost-built projection.<P,T>
CompositeProjectionOptionsStep<?,T>composite(Function<P,T> transformer, SearchProjection<P> projection)
Create a projection that will compose a custom object based on one given projection.default CompositeProjectionOptionsStep<?,List<?>>
composite(ProjectionFinalStep<?>... dslFinalSteps)
Create a projection that will compose aList
based on the given almost-built projections.default CompositeProjectionOptionsStep<?,List<?>>
composite(SearchProjection<?>... projections)
Create a projection that will compose aList
based on the given projections.default <P1,P2,P3,T>
CompositeProjectionOptionsStep<?,T>composite(TriFunction<P1,P2,P3,T> transformer, ProjectionFinalStep<P1> dslFinalStep1, ProjectionFinalStep<P2> dslFinalStep2, ProjectionFinalStep<P3> dslFinalStep3)
Create a projection that will compose a custom object based on three almost-built projections.<P1,P2,P3,T>
CompositeProjectionOptionsStep<?,T>composite(TriFunction<P1,P2,P3,T> transformer, SearchProjection<P1> projection1, SearchProjection<P2> projection2, SearchProjection<P3> projection3)
Create a projection that will compose a custom object based on three given projections.DistanceToFieldProjectionValueStep<?,Double>
distance(String absoluteFieldPath, GeoPoint center)
Project on the distance from the center to aGeoPoint
field.DocumentReferenceProjectionOptionsStep<?>
documentReference()
Project the match to aDocumentReference
.EntityProjectionOptionsStep<?,E>
entity()
Project to the entity was originally indexed.EntityReferenceProjectionOptionsStep<?,R>
entityReference()
Project to a reference to the entity that was originally indexed.<T> SearchProjectionFactoryExtensionIfSupportedStep<T,R,E>
extension()
Create a DSL step allowing multiple attempts to apply extensions one after the other, failing only if none of the extensions is supported.<T> T
extension(SearchProjectionFactoryExtension<T,R,E> extension)
Extend the current factory with the given extension, resulting in an extended factory offering different types of projections.default FieldProjectionValueStep<?,Object>
field(String absoluteFieldPath)
Project to the value of a field in the indexed document, without specifying a type.default <T> FieldProjectionValueStep<?,T>
field(String absoluteFieldPath, Class<T> type)
Project to the value of a field in the indexed document.<T> FieldProjectionValueStep<?,T>
field(String absoluteFieldPath, Class<T> type, ValueConvert convert)
Project to the value of a field in the indexed document.FieldProjectionValueStep<?,Object>
field(String absoluteFieldPath, ValueConvert convert)
Project to the value of a field in the indexed document, without specifying a type.ScoreProjectionOptionsStep<?>
score()
Project on the score of the hit.
-
-
-
Method Detail
-
documentReference
DocumentReferenceProjectionOptionsStep<?> documentReference()
Project the match to aDocumentReference
.- Returns:
- A DSL step where the "document reference" projection can be defined in more details.
-
entityReference
EntityReferenceProjectionOptionsStep<?,R> entityReference()
Project to a reference to the entity that was originally indexed.The actual type of the reference depends on the mapper used to create the query: the ORM mapper will return a class/identifier pair, for example.
- Returns:
- A DSL step where the "entity reference" projection can be defined in more details.
-
entity
EntityProjectionOptionsStep<?,E> entity()
Project to the entity was originally indexed.The actual type of the entity depends on the mapper used to create the query and on the indexes targeted by your query: the ORM mapper will return a managed entity loaded from the database, for example.
- Returns:
- A DSL step where the "entity" projection can be defined in more details.
-
field
default <T> FieldProjectionValueStep<?,T> field(String absoluteFieldPath, Class<T> type)
Project to the value of a field in the indexed document.This method will apply projection converters on data fetched from the backend. See
ValueConvert.YES
.- Type Parameters:
T
- The resulting type of the projection.- Parameters:
absoluteFieldPath
- The absolute path of the field.type
- The resulting type of the projection.- Returns:
- A DSL step where the "field" projection can be defined in more details.
-
field
<T> FieldProjectionValueStep<?,T> field(String absoluteFieldPath, Class<T> type, ValueConvert convert)
Project to the value of a field in the indexed document.- Type Parameters:
T
- The resulting type of the projection.- Parameters:
absoluteFieldPath
- The absolute path of the field.type
- The resulting type of the projection.convert
- Controls how the data fetched from the backend should be converted. SeeValueConvert
.- Returns:
- A DSL step where the "field" projection can be defined in more details.
-
field
default FieldProjectionValueStep<?,Object> field(String absoluteFieldPath)
Project to the value of a field in the indexed document, without specifying a type.This method will apply projection converters on data fetched from the backend. See
ValueConvert.YES
.- Parameters:
absoluteFieldPath
- The absolute path of the field.- Returns:
- A DSL step where the "field" projection can be defined in more details.
-
field
FieldProjectionValueStep<?,Object> field(String absoluteFieldPath, ValueConvert convert)
Project to the value of a field in the indexed document, without specifying a type.- Parameters:
absoluteFieldPath
- The absolute path of the field.convert
- Controls how the data fetched from the backend should be converted. SeeValueConvert
.- Returns:
- A DSL step where the "field" projection can be defined in more details.
-
score
ScoreProjectionOptionsStep<?> score()
Project on the score of the hit.- Returns:
- A DSL step where the "score" projection can be defined in more details.
-
distance
DistanceToFieldProjectionValueStep<?,Double> distance(String absoluteFieldPath, GeoPoint center)
Project on the distance from the center to aGeoPoint
field.- Parameters:
absoluteFieldPath
- The absolute path of the field.center
- The center to compute the distance from.- Returns:
- A DSL step where the "distance" projection can be defined in more details.
-
composite
default CompositeProjectionOptionsStep<?,List<?>> composite(SearchProjection<?>... projections)
Create a projection that will compose aList
based on the given projections.- Parameters:
projections
- The projections used to populate the list, in order.- Returns:
- A DSL step where the "composite" projection can be defined in more details.
-
composite
default CompositeProjectionOptionsStep<?,List<?>> composite(ProjectionFinalStep<?>... dslFinalSteps)
Create a projection that will compose aList
based on the given almost-built projections.- Parameters:
dslFinalSteps
- The final steps in the projection DSL allowing the retrieval ofSearchProjection
s.- Returns:
- A DSL step where the "composite" projection can be defined in more details.
-
composite
<T> CompositeProjectionOptionsStep<?,T> composite(Function<List<?>,T> transformer, SearchProjection<?>... projections)
Create a projection that will compose a custom object based on the given projections.- Type Parameters:
T
- The type of the custom object composing the projected elements.- Parameters:
transformer
- The function that will transform the list of projected elements into a custom object.projections
- The projections used to populate the list, in order.- Returns:
- A DSL step where the "composite" projection can be defined in more details.
-
composite
default <T> CompositeProjectionOptionsStep<?,T> composite(Function<List<?>,T> transformer, ProjectionFinalStep<?>... dslFinalSteps)
Create a projection that will compose a custom object based on the given almost-built projections.- Type Parameters:
T
- The type of the custom object composing the projected elements.- Parameters:
transformer
- The function that will transform the projected element into a custom object.dslFinalSteps
- The final steps in the projection DSL allowing the retrieval ofSearchProjection
s.- Returns:
- A DSL step where the "composite" projection can be defined in more details.
-
composite
<P,T> CompositeProjectionOptionsStep<?,T> composite(Function<P,T> transformer, SearchProjection<P> projection)
Create a projection that will compose a custom object based on one given projection.- Type Parameters:
P
- The type of the element passed to the transformer.T
- The type of the custom object composing the projected element.- Parameters:
transformer
- The function that will transform the projected element into a custom object.projection
- The original projection used to produce the element passed to the transformer.- Returns:
- A DSL step where the "composite" projection can be defined in more details.
-
composite
default <P,T> CompositeProjectionOptionsStep<?,T> composite(Function<P,T> transformer, ProjectionFinalStep<P> dslFinalStep)
Create a projection that will compose a custom object based on one almost-built projection.- Type Parameters:
P
- The type of the element passed to the transformer.T
- The type of the custom object composing the projected element.- Parameters:
transformer
- The function that will transform the projected element into a custom object.dslFinalStep
- The final step in the projection DSL allowing the retrieval of theSearchProjection
that will be used to produce the element passed to the transformer.- Returns:
- A DSL step where the "composite" projection can be defined in more details.
-
composite
<P1,P2,T> CompositeProjectionOptionsStep<?,T> composite(BiFunction<P1,P2,T> transformer, SearchProjection<P1> projection1, SearchProjection<P2> projection2)
Create a projection that will compose a custom object based on two given projections.- Type Parameters:
P1
- The type of the first element passed to the transformer.P2
- The type of the second element passed to the transformer.T
- The type of the custom object composing the projected elements.- Parameters:
transformer
- The function that will transform the projected elements into a custom object.projection1
- The projection used to produce the first element passed to the transformer.projection2
- The projection used to produce the second element passed to the transformer.- Returns:
- A DSL step where the "composite" projection can be defined in more details.
-
composite
default <P1,P2,T> CompositeProjectionOptionsStep<?,T> composite(BiFunction<P1,P2,T> transformer, ProjectionFinalStep<P1> dslFinalStep1, ProjectionFinalStep<P2> dslFinalStep2)
Create a projection that will compose a custom object based on two almost-built projections.- Type Parameters:
P1
- The type of the first element passed to the transformer.P2
- The type of the second element passed to the transformer.T
- The type of the custom object composing the projected elements.- Parameters:
transformer
- The function that will transform the projected elements into a custom object.dslFinalStep1
- The final step in the projection DSL allowing the retrieval of theSearchProjection
that will be used to produce the first element passed to the transformer.dslFinalStep2
- The final step in the projection DSL allowing the retrieval of theSearchProjection
that will be used to produce the second element passed to the transformer.- Returns:
- A DSL step where the "composite" projection can be defined in more details.
-
composite
<P1,P2,P3,T> CompositeProjectionOptionsStep<?,T> composite(TriFunction<P1,P2,P3,T> transformer, SearchProjection<P1> projection1, SearchProjection<P2> projection2, SearchProjection<P3> projection3)
Create a projection that will compose a custom object based on three given projections.- Type Parameters:
P1
- The type of the first element passed to the transformer.P2
- The type of the second element passed to the transformer.P3
- The type of the third element passed to the transformer.T
- The type of the custom object composing the projected elements.- Parameters:
transformer
- The function that will transform the projected elements into a custom object.projection1
- The projection used to produce the first element passed to the transformer.projection2
- The projection used to produce the second element passed to the transformer.projection3
- The projection used to produce the third element passed to the transformer.- Returns:
- A DSL step where the "composite" projection can be defined in more details.
-
composite
default <P1,P2,P3,T> CompositeProjectionOptionsStep<?,T> composite(TriFunction<P1,P2,P3,T> transformer, ProjectionFinalStep<P1> dslFinalStep1, ProjectionFinalStep<P2> dslFinalStep2, ProjectionFinalStep<P3> dslFinalStep3)
Create a projection that will compose a custom object based on three almost-built projections.- Type Parameters:
P1
- The type of the first element passed to the transformer.P2
- The type of the second element passed to the transformer.P3
- The type of the third element passed to the transformer.T
- The type of the custom object composing the projected elements.- Parameters:
transformer
- The function that will transform the projected elements into a custom object.dslFinalStep1
- The final step in the projection DSL allowing the retrieval of theSearchProjection
that will be used to produce the first element passed to the transformer.dslFinalStep2
- The final step in the projection DSL allowing the retrieval of theSearchProjection
that will be used to produce the second element passed to the transformer.dslFinalStep3
- The final step in the projection DSL allowing the retrieval of theSearchProjection
that will be used to produce the third element passed to the transformer.- Returns:
- A DSL step where the "composite" projection can be defined in more details.
-
extension
<T> T extension(SearchProjectionFactoryExtension<T,R,E> extension)
Extend the current factory with the given extension, resulting in an extended factory offering different types of projections.- Type Parameters:
T
- The type of factory provided by the extension.- Parameters:
extension
- The extension to the projection DSL.- Returns:
- The extended factory.
- Throws:
SearchException
- If the extension cannot be applied (wrong underlying backend, ...).
-
extension
<T> SearchProjectionFactoryExtensionIfSupportedStep<T,R,E> extension()
Create a DSL step allowing multiple attempts to apply extensions one after the other, failing only if none of the extensions is supported.If you only need to apply a single extension and fail if it is not supported, use the simpler
extension(SearchProjectionFactoryExtension)
method instead.This method is generic, and you should set the generic type explicitly to the expected projected type, e.g.
.<MyProjectedType>extension()
.- Type Parameters:
T
- The expected projected type.- Returns:
- A DSL step.
-
-