diff --git a/src/main/java/org/springframework/data/elasticsearch/core/RequestFactory.java b/src/main/java/org/springframework/data/elasticsearch/core/RequestFactory.java index 5ecf31d6d..e2ffaa038 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/RequestFactory.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/RequestFactory.java @@ -552,6 +552,10 @@ class RequestFactory { } + if (query.getTrackTotalHits()) { + sourceBuilder.trackTotalHits(query.getTrackTotalHits()); + } + request.source(sourceBuilder); return request; } @@ -714,6 +718,10 @@ class RequestFactory { prepareNativeSearch(searchRequestBuilder, (NativeSearchQuery) query); } + if (query.getTrackTotalHits()) { + searchRequestBuilder.setTrackTotalHits(query.getTrackTotalHits()); + } + return searchRequestBuilder; } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/AbstractQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/AbstractQuery.java index 1bb2419b0..2a98092d8 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/AbstractQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/AbstractQuery.java @@ -54,6 +54,7 @@ abstract class AbstractQuery implements Query { protected String preference; protected Integer maxResults; protected HighlightQuery highlightQuery; + private boolean trackTotalHits = false; @Override public Sort getSort() { @@ -208,4 +209,13 @@ abstract class AbstractQuery implements Query { return Optional.ofNullable(highlightQuery); } + @Override + public void setTrackTotalHits(boolean trackTotalHits) { + this.trackTotalHits = trackTotalHits; + } + + @Override + public boolean getTrackTotalHits() { + return trackTotalHits; + } } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java b/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java index 6c0c2e721..34155b080 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java @@ -202,4 +202,24 @@ public interface Query { default Optional getHighlightQuery() { return Optional.empty(); } + + /** + * Sets the flag whether to set the Track_total_hits parameter on queries {@see Elasticseacrh + * documentation} + * + * @param trackTotalHits the value to set. + * @since 4.0 + */ + void setTrackTotalHits(boolean trackTotalHits); + + /** + * Sets the flag whether to set the Track_total_hits parameter on queries {@see Elasticseacrh + * documentation} + * + * @return the set value. + * @since 4.0 + */ + boolean getTrackTotalHits(); }